/* VideoMonitor.c generated by valac 0.36.6, the Vala compiler
 * generated from VideoMonitor.vala, do not modify */

/* Copyright 2016 Software Freedom Conservancy Inc.
 *
 * This software is licensed under the GNU Lesser General Public License
 * (version 2.1 or later).  See the COPYING file in this distribution.
 */

#include <glib.h>
#include <glib-object.h>
#include <gio/gio.h>
#include <stdlib.h>
#include <string.h>
#include <gee.h>


#define TYPE_MONITORABLE_UPDATES (monitorable_updates_get_type ())
#define MONITORABLE_UPDATES(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_MONITORABLE_UPDATES, MonitorableUpdates))
#define MONITORABLE_UPDATES_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_MONITORABLE_UPDATES, MonitorableUpdatesClass))
#define IS_MONITORABLE_UPDATES(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_MONITORABLE_UPDATES))
#define IS_MONITORABLE_UPDATES_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_MONITORABLE_UPDATES))
#define MONITORABLE_UPDATES_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_MONITORABLE_UPDATES, MonitorableUpdatesClass))

typedef struct _MonitorableUpdates MonitorableUpdates;
typedef struct _MonitorableUpdatesClass MonitorableUpdatesClass;
typedef struct _MonitorableUpdatesPrivate MonitorableUpdatesPrivate;

#define TYPE_DATA_OBJECT (data_object_get_type ())
#define DATA_OBJECT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_DATA_OBJECT, DataObject))
#define DATA_OBJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_DATA_OBJECT, DataObjectClass))
#define IS_DATA_OBJECT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_DATA_OBJECT))
#define IS_DATA_OBJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_DATA_OBJECT))
#define DATA_OBJECT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_DATA_OBJECT, DataObjectClass))

typedef struct _DataObject DataObject;
typedef struct _DataObjectClass DataObjectClass;

#define TYPE_DATA_SOURCE (data_source_get_type ())
#define DATA_SOURCE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_DATA_SOURCE, DataSource))
#define DATA_SOURCE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_DATA_SOURCE, DataSourceClass))
#define IS_DATA_SOURCE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_DATA_SOURCE))
#define IS_DATA_SOURCE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_DATA_SOURCE))
#define DATA_SOURCE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_DATA_SOURCE, DataSourceClass))

typedef struct _DataSource DataSource;
typedef struct _DataSourceClass DataSourceClass;

#define TYPE_THUMBNAIL_SOURCE (thumbnail_source_get_type ())
#define THUMBNAIL_SOURCE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_THUMBNAIL_SOURCE, ThumbnailSource))
#define THUMBNAIL_SOURCE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_THUMBNAIL_SOURCE, ThumbnailSourceClass))
#define IS_THUMBNAIL_SOURCE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_THUMBNAIL_SOURCE))
#define IS_THUMBNAIL_SOURCE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_THUMBNAIL_SOURCE))
#define THUMBNAIL_SOURCE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_THUMBNAIL_SOURCE, ThumbnailSourceClass))

typedef struct _ThumbnailSource ThumbnailSource;
typedef struct _ThumbnailSourceClass ThumbnailSourceClass;

#define TYPE_MEDIA_SOURCE (media_source_get_type ())
#define MEDIA_SOURCE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_MEDIA_SOURCE, MediaSource))
#define MEDIA_SOURCE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_MEDIA_SOURCE, MediaSourceClass))
#define IS_MEDIA_SOURCE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_MEDIA_SOURCE))
#define IS_MEDIA_SOURCE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_MEDIA_SOURCE))
#define MEDIA_SOURCE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_MEDIA_SOURCE, MediaSourceClass))

typedef struct _MediaSource MediaSource;
typedef struct _MediaSourceClass MediaSourceClass;

#define TYPE_MONITORABLE (monitorable_get_type ())
#define MONITORABLE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_MONITORABLE, Monitorable))
#define IS_MONITORABLE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_MONITORABLE))
#define MONITORABLE_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), TYPE_MONITORABLE, MonitorableIface))

typedef struct _Monitorable Monitorable;
typedef struct _MonitorableIface MonitorableIface;

#define TYPE_VIDEO_UPDATES (video_updates_get_type ())
#define VIDEO_UPDATES(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_VIDEO_UPDATES, VideoUpdates))
#define VIDEO_UPDATES_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_VIDEO_UPDATES, VideoUpdatesClass))
#define IS_VIDEO_UPDATES(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_VIDEO_UPDATES))
#define IS_VIDEO_UPDATES_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_VIDEO_UPDATES))
#define VIDEO_UPDATES_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_VIDEO_UPDATES, VideoUpdatesClass))

typedef struct _VideoUpdates VideoUpdates;
typedef struct _VideoUpdatesClass VideoUpdatesClass;
typedef struct _VideoUpdatesPrivate VideoUpdatesPrivate;

#define TYPE_VIDEO_SOURCE (video_source_get_type ())
#define VIDEO_SOURCE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_VIDEO_SOURCE, VideoSource))
#define VIDEO_SOURCE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_VIDEO_SOURCE, VideoSourceClass))
#define IS_VIDEO_SOURCE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_VIDEO_SOURCE))
#define IS_VIDEO_SOURCE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_VIDEO_SOURCE))
#define VIDEO_SOURCE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_VIDEO_SOURCE, VideoSourceClass))

typedef struct _VideoSource VideoSource;
typedef struct _VideoSourceClass VideoSourceClass;

#define TYPE_VIDEO (video_get_type ())
#define VIDEO(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_VIDEO, Video))
#define VIDEO_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_VIDEO, VideoClass))
#define IS_VIDEO(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_VIDEO))
#define IS_VIDEO_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_VIDEO))
#define VIDEO_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_VIDEO, VideoClass))

typedef struct _Video Video;
typedef struct _VideoClass VideoClass;
#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))

#define TYPE_MEDIA_MONITOR (media_monitor_get_type ())
#define MEDIA_MONITOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_MEDIA_MONITOR, MediaMonitor))
#define MEDIA_MONITOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_MEDIA_MONITOR, MediaMonitorClass))
#define IS_MEDIA_MONITOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_MEDIA_MONITOR))
#define IS_MEDIA_MONITOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_MEDIA_MONITOR))
#define MEDIA_MONITOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_MEDIA_MONITOR, MediaMonitorClass))

typedef struct _MediaMonitor MediaMonitor;
typedef struct _MediaMonitorClass MediaMonitorClass;
typedef struct _MediaMonitorPrivate MediaMonitorPrivate;

#define TYPE_DATA_COLLECTION (data_collection_get_type ())
#define DATA_COLLECTION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_DATA_COLLECTION, DataCollection))
#define DATA_COLLECTION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_DATA_COLLECTION, DataCollectionClass))
#define IS_DATA_COLLECTION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_DATA_COLLECTION))
#define IS_DATA_COLLECTION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_DATA_COLLECTION))
#define DATA_COLLECTION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_DATA_COLLECTION, DataCollectionClass))

typedef struct _DataCollection DataCollection;
typedef struct _DataCollectionClass DataCollectionClass;

#define TYPE_SOURCE_COLLECTION (source_collection_get_type ())
#define SOURCE_COLLECTION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_SOURCE_COLLECTION, SourceCollection))
#define SOURCE_COLLECTION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_SOURCE_COLLECTION, SourceCollectionClass))
#define IS_SOURCE_COLLECTION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_SOURCE_COLLECTION))
#define IS_SOURCE_COLLECTION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_SOURCE_COLLECTION))
#define SOURCE_COLLECTION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_SOURCE_COLLECTION, SourceCollectionClass))

typedef struct _SourceCollection SourceCollection;
typedef struct _SourceCollectionClass SourceCollectionClass;

#define TYPE_DATABASE_SOURCE_COLLECTION (database_source_collection_get_type ())
#define DATABASE_SOURCE_COLLECTION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_DATABASE_SOURCE_COLLECTION, DatabaseSourceCollection))
#define DATABASE_SOURCE_COLLECTION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_DATABASE_SOURCE_COLLECTION, DatabaseSourceCollectionClass))
#define IS_DATABASE_SOURCE_COLLECTION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_DATABASE_SOURCE_COLLECTION))
#define IS_DATABASE_SOURCE_COLLECTION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_DATABASE_SOURCE_COLLECTION))
#define DATABASE_SOURCE_COLLECTION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_DATABASE_SOURCE_COLLECTION, DatabaseSourceCollectionClass))

typedef struct _DatabaseSourceCollection DatabaseSourceCollection;
typedef struct _DatabaseSourceCollectionClass DatabaseSourceCollectionClass;

#define TYPE_MEDIA_SOURCE_COLLECTION (media_source_collection_get_type ())
#define MEDIA_SOURCE_COLLECTION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_MEDIA_SOURCE_COLLECTION, MediaSourceCollection))
#define MEDIA_SOURCE_COLLECTION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_MEDIA_SOURCE_COLLECTION, MediaSourceCollectionClass))
#define IS_MEDIA_SOURCE_COLLECTION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_MEDIA_SOURCE_COLLECTION))
#define IS_MEDIA_SOURCE_COLLECTION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_MEDIA_SOURCE_COLLECTION))
#define MEDIA_SOURCE_COLLECTION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_MEDIA_SOURCE_COLLECTION, MediaSourceCollectionClass))

typedef struct _MediaSourceCollection MediaSourceCollection;
typedef struct _MediaSourceCollectionClass MediaSourceCollectionClass;

#define MEDIA_MONITOR_TYPE_DISCOVERED_FILE (media_monitor_discovered_file_get_type ())

#define TYPE_TRANSACTION_CONTROLLER (transaction_controller_get_type ())
#define TRANSACTION_CONTROLLER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_TRANSACTION_CONTROLLER, TransactionController))
#define TRANSACTION_CONTROLLER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_TRANSACTION_CONTROLLER, TransactionControllerClass))
#define IS_TRANSACTION_CONTROLLER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_TRANSACTION_CONTROLLER))
#define IS_TRANSACTION_CONTROLLER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_TRANSACTION_CONTROLLER))
#define TRANSACTION_CONTROLLER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_TRANSACTION_CONTROLLER, TransactionControllerClass))

typedef struct _TransactionController TransactionController;
typedef struct _TransactionControllerClass TransactionControllerClass;

#define TYPE_VIDEO_MONITOR (video_monitor_get_type ())
#define VIDEO_MONITOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_VIDEO_MONITOR, VideoMonitor))
#define VIDEO_MONITOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_VIDEO_MONITOR, VideoMonitorClass))
#define IS_VIDEO_MONITOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_VIDEO_MONITOR))
#define IS_VIDEO_MONITOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_VIDEO_MONITOR))
#define VIDEO_MONITOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_VIDEO_MONITOR, VideoMonitorClass))

typedef struct _VideoMonitor VideoMonitor;
typedef struct _VideoMonitorClass VideoMonitorClass;
typedef struct _VideoMonitorPrivate VideoMonitorPrivate;

#define TYPE_WORKERS (workers_get_type ())
#define WORKERS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_WORKERS, Workers))
#define WORKERS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_WORKERS, WorkersClass))
#define IS_WORKERS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_WORKERS))
#define IS_WORKERS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_WORKERS))
#define WORKERS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_WORKERS, WorkersClass))

typedef struct _Workers Workers;
typedef struct _WorkersClass WorkersClass;
#define _workers_unref0(var) ((var == NULL) ? NULL : (var = (workers_unref (var), NULL)))

#define TYPE_VIDEO_SOURCE_COLLECTION (video_source_collection_get_type ())
#define VIDEO_SOURCE_COLLECTION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_VIDEO_SOURCE_COLLECTION, VideoSourceCollection))
#define VIDEO_SOURCE_COLLECTION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_VIDEO_SOURCE_COLLECTION, VideoSourceCollectionClass))
#define IS_VIDEO_SOURCE_COLLECTION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_VIDEO_SOURCE_COLLECTION))
#define IS_VIDEO_SOURCE_COLLECTION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_VIDEO_SOURCE_COLLECTION))
#define VIDEO_SOURCE_COLLECTION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_VIDEO_SOURCE_COLLECTION, VideoSourceCollectionClass))

typedef struct _VideoSourceCollection VideoSourceCollection;
typedef struct _VideoSourceCollectionClass VideoSourceCollectionClass;

#define VIDEO_SOURCE_COLLECTION_TYPE_STATE (video_source_collection_state_get_type ())
#define _monitorable_updates_unref0(var) ((var == NULL) ? NULL : (var = (monitorable_updates_unref (var), NULL)))
#define _g_free0(var) (var = (g_free (var), NULL))

#define TYPE_BACKGROUND_JOB (background_job_get_type ())
#define BACKGROUND_JOB(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_BACKGROUND_JOB, BackgroundJob))
#define BACKGROUND_JOB_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_BACKGROUND_JOB, BackgroundJobClass))
#define IS_BACKGROUND_JOB(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_BACKGROUND_JOB))
#define IS_BACKGROUND_JOB_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_BACKGROUND_JOB))
#define BACKGROUND_JOB_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_BACKGROUND_JOB, BackgroundJobClass))

typedef struct _BackgroundJob BackgroundJob;
typedef struct _BackgroundJobClass BackgroundJobClass;

#define VIDEO_MONITOR_TYPE_VIDEO_INTERPRETABLE_CHECK_JOB (video_monitor_video_interpretable_check_job_get_type ())
#define VIDEO_MONITOR_VIDEO_INTERPRETABLE_CHECK_JOB(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VIDEO_MONITOR_TYPE_VIDEO_INTERPRETABLE_CHECK_JOB, VideoMonitorVideoInterpretableCheckJob))
#define VIDEO_MONITOR_VIDEO_INTERPRETABLE_CHECK_JOB_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VIDEO_MONITOR_TYPE_VIDEO_INTERPRETABLE_CHECK_JOB, VideoMonitorVideoInterpretableCheckJobClass))
#define VIDEO_MONITOR_IS_VIDEO_INTERPRETABLE_CHECK_JOB(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VIDEO_MONITOR_TYPE_VIDEO_INTERPRETABLE_CHECK_JOB))
#define VIDEO_MONITOR_IS_VIDEO_INTERPRETABLE_CHECK_JOB_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VIDEO_MONITOR_TYPE_VIDEO_INTERPRETABLE_CHECK_JOB))
#define VIDEO_MONITOR_VIDEO_INTERPRETABLE_CHECK_JOB_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VIDEO_MONITOR_TYPE_VIDEO_INTERPRETABLE_CHECK_JOB, VideoMonitorVideoInterpretableCheckJobClass))

typedef struct _VideoMonitorVideoInterpretableCheckJob VideoMonitorVideoInterpretableCheckJob;
typedef struct _VideoMonitorVideoInterpretableCheckJobClass VideoMonitorVideoInterpretableCheckJobClass;
#define _background_job_unref0(var) ((var == NULL) ? NULL : (var = (background_job_unref (var), NULL)))
typedef struct _BackgroundJobPrivate BackgroundJobPrivate;

#define BACKGROUND_JOB_TYPE_JOB_PRIORITY (background_job_job_priority_get_type ())
typedef struct _VideoMonitorVideoInterpretableCheckJobPrivate VideoMonitorVideoInterpretableCheckJobPrivate;

#define VIDEO_TYPE_INTERPRETABLE_RESULTS (video_interpretable_results_get_type ())
#define VIDEO_INTERPRETABLE_RESULTS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VIDEO_TYPE_INTERPRETABLE_RESULTS, VideoInterpretableResults))
#define VIDEO_INTERPRETABLE_RESULTS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VIDEO_TYPE_INTERPRETABLE_RESULTS, VideoInterpretableResultsClass))
#define VIDEO_IS_INTERPRETABLE_RESULTS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VIDEO_TYPE_INTERPRETABLE_RESULTS))
#define VIDEO_IS_INTERPRETABLE_RESULTS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VIDEO_TYPE_INTERPRETABLE_RESULTS))
#define VIDEO_INTERPRETABLE_RESULTS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VIDEO_TYPE_INTERPRETABLE_RESULTS, VideoInterpretableResultsClass))

typedef struct _VideoInterpretableResults VideoInterpretableResults;
typedef struct _VideoInterpretableResultsClass VideoInterpretableResultsClass;
#define _video_interpretable_results_unref0(var) ((var == NULL) ? NULL : (var = (video_interpretable_results_unref (var), NULL)))

#define TYPE_ABSTRACT_SEMAPHORE (abstract_semaphore_get_type ())
#define ABSTRACT_SEMAPHORE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_ABSTRACT_SEMAPHORE, AbstractSemaphore))
#define ABSTRACT_SEMAPHORE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_ABSTRACT_SEMAPHORE, AbstractSemaphoreClass))
#define IS_ABSTRACT_SEMAPHORE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_ABSTRACT_SEMAPHORE))
#define IS_ABSTRACT_SEMAPHORE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_ABSTRACT_SEMAPHORE))
#define ABSTRACT_SEMAPHORE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_ABSTRACT_SEMAPHORE, AbstractSemaphoreClass))

typedef struct _AbstractSemaphore AbstractSemaphore;
typedef struct _AbstractSemaphoreClass AbstractSemaphoreClass;
#define _vala_assert(expr, msg) if G_LIKELY (expr) ; else g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, msg);
#define _vala_return_if_fail(expr, msg) if G_LIKELY (expr) ; else { g_return_if_fail_warning (G_LOG_DOMAIN, G_STRFUNC, msg); return; }
#define _vala_return_val_if_fail(expr, msg, val) if G_LIKELY (expr) ; else { g_return_if_fail_warning (G_LOG_DOMAIN, G_STRFUNC, msg); return val; }
#define _vala_warn_if_fail(expr, msg) if G_LIKELY (expr) ; else g_warn_message (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, msg);

struct _MonitorableIface {
	GTypeInterface parent_iface;
	gboolean (*is_offline) (Monitorable* self);
	void (*mark_online) (Monitorable* self);
	void (*mark_offline) (Monitorable* self);
	void (*set_master_file) (Monitorable* self, GFile* file);
	void (*set_master_timestamp) (Monitorable* self, GFileInfo* info);
};

struct _MonitorableUpdates {
	GTypeInstance parent_instance;
	volatile int ref_count;
	MonitorableUpdatesPrivate * priv;
	Monitorable* monitorable;
};

struct _MonitorableUpdatesClass {
	GTypeClass parent_class;
	void (*finalize) (MonitorableUpdates *self);
	gboolean (*is_in_alteration) (MonitorableUpdates* self);
	void (*set_master_file) (MonitorableUpdates* self, GFile* file);
	void (*set_master_file_info_altered) (MonitorableUpdates* self, gboolean altered);
	void (*set_master_file_info) (MonitorableUpdates* self, GFileInfo* info);
	void (*set_master_in_alteration) (MonitorableUpdates* self, gboolean in_alteration);
	void (*set_master_alterations_complete) (MonitorableUpdates* self, GFileInfo* info);
	void (*mark_offline) (MonitorableUpdates* self);
	void (*mark_online) (MonitorableUpdates* self);
	void (*reset_online_offline) (MonitorableUpdates* self);
	gboolean (*is_all_updated) (MonitorableUpdates* self);
};

struct _VideoUpdates {
	MonitorableUpdates parent_instance;
	VideoUpdatesPrivate * priv;
	Video* video;
};

struct _VideoUpdatesClass {
	MonitorableUpdatesClass parent_class;
	void (*set_check_interpretable) (VideoUpdates* self, gboolean check);
};

struct _VideoUpdatesPrivate {
	gboolean check_interpretable;
};

typedef enum  {
	MEDIA_MONITOR_DISCOVERED_FILE_REPRESENTED,
	MEDIA_MONITOR_DISCOVERED_FILE_IGNORE,
	MEDIA_MONITOR_DISCOVERED_FILE_UNKNOWN
} MediaMonitorDiscoveredFile;

struct _MediaMonitor {
	GObject parent_instance;
	MediaMonitorPrivate * priv;
};

struct _MediaMonitorClass {
	GObjectClass parent_class;
	MediaSourceCollection* (*get_media_source_collection) (MediaMonitor* self);
	void (*close) (MediaMonitor* self);
	gchar* (*to_string) (MediaMonitor* self);
	MonitorableUpdates* (*create_updates) (MediaMonitor* self, Monitorable* monitorable);
	void (*on_media_source_destroyed) (MediaMonitor* self, DataSource* source);
	void (*notify_discovery_started) (MediaMonitor* self);
	MediaMonitorDiscoveredFile (*notify_file_discovered) (MediaMonitor* self, GFile* file, GFileInfo* info, Monitorable* * monitorable);
	GeeCollection* (*candidates_for_unknown_file) (MediaMonitor* self, GFile* file, GFileInfo* info, MediaMonitorDiscoveredFile* _result_);
	GFile** (*get_auxilliary_backing_files) (MediaMonitor* self, Monitorable* monitorable, int* result_length1);
	void (*update_backing_file_info) (MediaMonitor* self, Monitorable* monitorable, GFile* file, GFileInfo* info);
	void (*notify_discovery_completing) (MediaMonitor* self);
	gboolean (*is_file_represented) (MediaMonitor* self, GFile* file);
	gboolean (*notify_file_created) (MediaMonitor* self, GFile* file, GFileInfo* info);
	gboolean (*notify_file_moved) (MediaMonitor* self, GFile* old_file, GFile* new_file, GFileInfo* new_file_info);
	gboolean (*notify_file_altered) (MediaMonitor* self, GFile* file);
	gboolean (*notify_file_attributes_altered) (MediaMonitor* self, GFile* file);
	gboolean (*notify_file_alteration_completed) (MediaMonitor* self, GFile* file, GFileInfo* info);
	gboolean (*notify_file_deleted) (MediaMonitor* self, GFile* file);
	void (*process_updates) (MediaMonitor* self, GeeCollection* all_updates, TransactionController* controller, gint* op_count, GError** error);
};

struct _VideoMonitor {
	MediaMonitor parent_instance;
	VideoMonitorPrivate * priv;
};

struct _VideoMonitorClass {
	MediaMonitorClass parent_class;
};

struct _VideoMonitorPrivate {
	Workers* workers;
	guint64 background_jobs;
};

typedef enum  {
	VIDEO_SOURCE_COLLECTION_STATE_UNKNOWN,
	VIDEO_SOURCE_COLLECTION_STATE_ONLINE,
	VIDEO_SOURCE_COLLECTION_STATE_OFFLINE,
	VIDEO_SOURCE_COLLECTION_STATE_TRASH
} VideoSourceCollectionState;

typedef void (*CompletionCallback) (BackgroundJob* job, void* user_data);
typedef enum  {
	BACKGROUND_JOB_JOB_PRIORITY_HIGHEST = 100,
	BACKGROUND_JOB_JOB_PRIORITY_HIGH = 75,
	BACKGROUND_JOB_JOB_PRIORITY_NORMAL = 50,
	BACKGROUND_JOB_JOB_PRIORITY_LOW = 25,
	BACKGROUND_JOB_JOB_PRIORITY_LOWEST = 0
} BackgroundJobJobPriority;

struct _BackgroundJob {
	GTypeInstance parent_instance;
	volatile int ref_count;
	BackgroundJobPrivate * priv;
};

struct _BackgroundJobClass {
	GTypeClass parent_class;
	void (*finalize) (BackgroundJob *self);
	void (*execute) (BackgroundJob* self);
	BackgroundJobJobPriority (*get_priority) (BackgroundJob* self);
};

struct _VideoMonitorVideoInterpretableCheckJob {
	BackgroundJob parent_instance;
	VideoMonitorVideoInterpretableCheckJobPrivate * priv;
	Video* video;
	VideoInterpretableResults* results;
};

struct _VideoMonitorVideoInterpretableCheckJobClass {
	BackgroundJobClass parent_class;
};

typedef void (*CancellationCallback) (BackgroundJob* job, void* user_data);

static gpointer video_updates_parent_class = NULL;
static gpointer video_monitor_parent_class = NULL;
extern VideoSourceCollection* video_global;
static gpointer video_monitor_video_interpretable_check_job_parent_class = NULL;

gpointer monitorable_updates_ref (gpointer instance);
void monitorable_updates_unref (gpointer instance);
GParamSpec* param_spec_monitorable_updates (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
void value_set_monitorable_updates (GValue* value, gpointer v_object);
void value_take_monitorable_updates (GValue* value, gpointer v_object);
gpointer value_get_monitorable_updates (const GValue* value);
GType monitorable_updates_get_type (void) G_GNUC_CONST;
GType data_object_get_type (void) G_GNUC_CONST;
GType data_source_get_type (void) G_GNUC_CONST;
GType thumbnail_source_get_type (void) G_GNUC_CONST;
GType media_source_get_type (void) G_GNUC_CONST;
GType monitorable_get_type (void) G_GNUC_CONST;
GType video_updates_get_type (void) G_GNUC_CONST;
GType video_source_get_type (void) G_GNUC_CONST;
GType video_get_type (void) G_GNUC_CONST;
#define VIDEO_UPDATES_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_VIDEO_UPDATES, VideoUpdatesPrivate))
enum  {
	VIDEO_UPDATES_DUMMY_PROPERTY
};
VideoUpdates* video_updates_new (Video* video);
VideoUpdates* video_updates_construct (GType object_type, Video* video);
MonitorableUpdates* monitorable_updates_new (Monitorable* monitorable);
MonitorableUpdates* monitorable_updates_construct (GType object_type, Monitorable* monitorable);
void video_updates_set_check_interpretable (VideoUpdates* self, gboolean check);
static void video_updates_real_set_check_interpretable (VideoUpdates* self, gboolean check);
static void video_updates_real_mark_online (MonitorableUpdates* base);
void monitorable_updates_mark_online (MonitorableUpdates* self);
gboolean video_updates_is_check_interpretable (VideoUpdates* self);
static gboolean video_updates_real_is_all_updated (MonitorableUpdates* base);
gboolean monitorable_updates_is_all_updated (MonitorableUpdates* self);
static void video_updates_finalize (MonitorableUpdates * obj);
GType media_monitor_get_type (void) G_GNUC_CONST;
gpointer data_collection_ref (gpointer instance);
void data_collection_unref (gpointer instance);
GParamSpec* param_spec_data_collection (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
void value_set_data_collection (GValue* value, gpointer v_object);
void value_take_data_collection (GValue* value, gpointer v_object);
gpointer value_get_data_collection (const GValue* value);
GType data_collection_get_type (void) G_GNUC_CONST;
GType source_collection_get_type (void) G_GNUC_CONST;
GType database_source_collection_get_type (void) G_GNUC_CONST;
GType media_source_collection_get_type (void) G_GNUC_CONST;
GType media_monitor_discovered_file_get_type (void) G_GNUC_CONST;
gpointer transaction_controller_ref (gpointer instance);
void transaction_controller_unref (gpointer instance);
GParamSpec* param_spec_transaction_controller (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
void value_set_transaction_controller (GValue* value, gpointer v_object);
void value_take_transaction_controller (GValue* value, gpointer v_object);
gpointer value_get_transaction_controller (const GValue* value);
GType transaction_controller_get_type (void) G_GNUC_CONST;
GType video_monitor_get_type (void) G_GNUC_CONST;
gpointer workers_ref (gpointer instance);
void workers_unref (gpointer instance);
GParamSpec* param_spec_workers (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
void value_set_workers (GValue* value, gpointer v_object);
void value_take_workers (GValue* value, gpointer v_object);
gpointer value_get_workers (const GValue* value);
GType workers_get_type (void) G_GNUC_CONST;
#define VIDEO_MONITOR_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_VIDEO_MONITOR, VideoMonitorPrivate))
enum  {
	VIDEO_MONITOR_DUMMY_PROPERTY
};
Workers* workers_new (guint max_threads, gboolean exclusive);
Workers* workers_construct (GType object_type, guint max_threads, gboolean exclusive);
#define VIDEO_MONITOR_MAX_INTERPRETABLE_CHECKS_PER_CYCLE 5
VideoMonitor* video_monitor_new (GCancellable* cancellable);
VideoMonitor* video_monitor_construct (GType object_type, GCancellable* cancellable);
GType video_source_collection_get_type (void) G_GNUC_CONST;
MediaMonitor* media_monitor_construct (GType object_type, MediaSourceCollection* sources, GCancellable* cancellable);
GeeCollection* data_collection_get_all (DataCollection* self);
gboolean video_get_is_interpretable (Video* self);
void video_monitor_set_check_interpretable (VideoMonitor* self, Video* video, gboolean check);
static MonitorableUpdates* video_monitor_real_create_updates (MediaMonitor* base, Monitorable* monitorable);
static MediaSourceCollection* video_monitor_real_get_media_source_collection (MediaMonitor* base);
static gboolean video_monitor_real_is_file_represented (MediaMonitor* base, GFile* file);
GType video_source_collection_state_get_type (void) G_GNUC_CONST;
static Video* video_monitor_get_state (VideoMonitor* self, GFile* file, VideoSourceCollectionState* state);
static MediaMonitorDiscoveredFile video_monitor_real_notify_file_discovered (MediaMonitor* base, GFile* file, GFileInfo* info, Monitorable* * monitorable);
static GeeCollection* video_monitor_real_candidates_for_unknown_file (MediaMonitor* base, GFile* file, GFileInfo* info, MediaMonitorDiscoveredFile* _result_);
void video_source_collection_fetch_by_matching_backing (VideoSourceCollection* self, GFileInfo* info, GeeCollection* matching_master);
static gboolean video_monitor_real_notify_file_created (MediaMonitor* base, GFile* file, GFileInfo* info);
void media_monitor_update_online (MediaMonitor* self, Monitorable* monitorable);
static gboolean video_monitor_real_notify_file_moved (MediaMonitor* base, GFile* old_file, GFile* new_file, GFileInfo* new_file_info);
void media_monitor_update_master_file (MediaMonitor* self, Monitorable* monitorable, GFile* file);
void media_monitor_update_offline (MediaMonitor* self, Monitorable* monitorable);
static gboolean video_monitor_real_notify_file_altered (MediaMonitor* base, GFile* file);
static gboolean video_monitor_real_notify_file_attributes_altered (MediaMonitor* base, GFile* file);
void media_monitor_update_master_file_info_altered (MediaMonitor* self, Monitorable* monitorable);
void media_monitor_update_master_file_in_alteration (MediaMonitor* self, Monitorable* monitorable, gboolean in_alteration);
static gboolean video_monitor_real_notify_file_alteration_completed (MediaMonitor* base, GFile* file, GFileInfo* info);
void media_monitor_update_master_file_alterations_completed (MediaMonitor* self, Monitorable* monitorable, GFileInfo* info);
static gboolean video_monitor_real_notify_file_deleted (MediaMonitor* base, GFile* file);
GeeCollection* media_monitor_get_monitorables (MediaMonitor* self);
VideoUpdates* video_monitor_get_existing_video_updates (VideoMonitor* self, Video* video);
GFile* monitorable_updates_get_master_file (MonitorableUpdates* self);
GFile* media_source_get_master_file (MediaSource* self);
Video* video_source_collection_get_state_by_file (VideoSourceCollection* self, GFile* file, VideoSourceCollectionState* state);
VideoUpdates* video_monitor_fetch_video_updates (VideoMonitor* self, Video* video);
MonitorableUpdates* media_monitor_fetch_updates (MediaMonitor* self, Monitorable* monitorable);
MonitorableUpdates* media_monitor_get_existing_updates (MediaMonitor* self, Monitorable* monitorable);
static void video_monitor_real_process_updates (MediaMonitor* base, GeeCollection* all_updates, TransactionController* controller, gint* op_count, GError** error);
void media_monitor_process_updates (MediaMonitor* self, GeeCollection* all_updates, TransactionController* controller, gint* op_count, GError** error);
#define MEDIA_MONITOR_MAX_OPERATIONS_PER_CYCLE 100
void media_monitor_mdbg (const gchar* msg);
void video_notify_offline_thumbs_regenerated (void);
gpointer background_job_ref (gpointer instance);
void background_job_unref (gpointer instance);
GParamSpec* param_spec_background_job (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
void value_set_background_job (GValue* value, gpointer v_object);
void value_take_background_job (GValue* value, gpointer v_object);
gpointer value_get_background_job (const GValue* value);
GType background_job_get_type (void) G_GNUC_CONST;
void workers_enqueue (Workers* self, BackgroundJob* job);
static void video_monitor_on_interpretable_check_complete (VideoMonitor* self, BackgroundJob* j);
static void _video_monitor_on_interpretable_check_complete_completion_callback (BackgroundJob* job, gpointer self);
static VideoMonitorVideoInterpretableCheckJob* video_monitor_video_interpretable_check_job_new (Video* video, CompletionCallback callback, void* callback_target);
static VideoMonitorVideoInterpretableCheckJob* video_monitor_video_interpretable_check_job_construct (GType object_type, Video* video, CompletionCallback callback, void* callback_target);
static GType video_monitor_video_interpretable_check_job_get_type (void) G_GNUC_CONST G_GNUC_UNUSED;
GType background_job_job_priority_get_type (void) G_GNUC_CONST;
gpointer video_interpretable_results_ref (gpointer instance);
void video_interpretable_results_unref (gpointer instance);
GParamSpec* video_param_spec_interpretable_results (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
void video_value_set_interpretable_results (GValue* value, gpointer v_object);
void video_value_take_interpretable_results (GValue* value, gpointer v_object);
gpointer video_value_get_interpretable_results (const GValue* value);
GType video_interpretable_results_get_type (void) G_GNUC_CONST;
void video_interpretable_results_foreground_finish (VideoInterpretableResults* self);
void video_notify_normal_thumbs_regenerated (void);
enum  {
	VIDEO_MONITOR_VIDEO_INTERPRETABLE_CHECK_JOB_DUMMY_PROPERTY
};
gpointer abstract_semaphore_ref (gpointer instance);
void abstract_semaphore_unref (gpointer instance);
GParamSpec* param_spec_abstract_semaphore (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
void value_set_abstract_semaphore (GValue* value, gpointer v_object);
void value_take_abstract_semaphore (GValue* value, gpointer v_object);
gpointer value_get_abstract_semaphore (const GValue* value);
GType abstract_semaphore_get_type (void) G_GNUC_CONST;
BackgroundJob* background_job_construct (GType object_type, GObject* owner, CompletionCallback callback, void* callback_target, GCancellable* cancellable, CancellationCallback cancellation, void* cancellation_target, AbstractSemaphore* completion_semaphore);
static void video_monitor_video_interpretable_check_job_real_execute (BackgroundJob* base);
VideoInterpretableResults* video_check_is_interpretable (Video* self);
static void video_monitor_video_interpretable_check_job_finalize (BackgroundJob * obj);
static void video_monitor_finalize (GObject * obj);


static gpointer _g_object_ref0 (gpointer self) {
#line 15 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	return self ? g_object_ref (self) : NULL;
#line 548 "VideoMonitor.c"
}


VideoUpdates* video_updates_construct (GType object_type, Video* video) {
	VideoUpdates* self = NULL;
	Video* _tmp0_;
	Video* _tmp1_;
	Video* _tmp2_;
#line 12 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	g_return_val_if_fail (IS_VIDEO (video), NULL);
#line 13 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	_tmp0_ = video;
#line 13 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	self = (VideoUpdates*) monitorable_updates_construct (object_type, G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, TYPE_MONITORABLE, Monitorable));
#line 15 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	_tmp1_ = video;
#line 15 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	_tmp2_ = _g_object_ref0 (_tmp1_);
#line 15 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	_g_object_unref0 (self->video);
#line 15 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	self->video = _tmp2_;
#line 12 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	return self;
#line 573 "VideoMonitor.c"
}


VideoUpdates* video_updates_new (Video* video) {
#line 12 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	return video_updates_construct (TYPE_VIDEO_UPDATES, video);
#line 580 "VideoMonitor.c"
}


static void video_updates_real_set_check_interpretable (VideoUpdates* self, gboolean check) {
	gboolean _tmp0_;
#line 19 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	_tmp0_ = check;
#line 19 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	self->priv->check_interpretable = _tmp0_;
#line 590 "VideoMonitor.c"
}


void video_updates_set_check_interpretable (VideoUpdates* self, gboolean check) {
#line 18 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	g_return_if_fail (IS_VIDEO_UPDATES (self));
#line 18 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	VIDEO_UPDATES_GET_CLASS (self)->set_check_interpretable (self, check);
#line 599 "VideoMonitor.c"
}


static void video_updates_real_mark_online (MonitorableUpdates* base) {
	VideoUpdates * self;
#line 22 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_VIDEO_UPDATES, VideoUpdates);
#line 23 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	MONITORABLE_UPDATES_CLASS (video_updates_parent_class)->mark_online (G_TYPE_CHECK_INSTANCE_CAST (self, TYPE_MONITORABLE_UPDATES, MonitorableUpdates));
#line 25 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	video_updates_set_check_interpretable (self, TRUE);
#line 611 "VideoMonitor.c"
}


gboolean video_updates_is_check_interpretable (VideoUpdates* self) {
	gboolean result = FALSE;
	gboolean _tmp0_;
#line 28 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	g_return_val_if_fail (IS_VIDEO_UPDATES (self), FALSE);
#line 29 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	_tmp0_ = self->priv->check_interpretable;
#line 29 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	result = _tmp0_;
#line 29 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	return result;
#line 626 "VideoMonitor.c"
}


static gboolean video_updates_real_is_all_updated (MonitorableUpdates* base) {
	VideoUpdates * self;
	gboolean result = FALSE;
	gboolean _tmp0_ = FALSE;
	gboolean _tmp1_;
#line 32 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_VIDEO_UPDATES, VideoUpdates);
#line 33 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	_tmp1_ = self->priv->check_interpretable;
#line 33 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	if (_tmp1_ == FALSE) {
#line 641 "VideoMonitor.c"
		gboolean _tmp2_;
#line 33 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
		_tmp2_ = MONITORABLE_UPDATES_CLASS (video_updates_parent_class)->is_all_updated (G_TYPE_CHECK_INSTANCE_CAST (self, TYPE_MONITORABLE_UPDATES, MonitorableUpdates));
#line 33 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
		_tmp0_ = _tmp2_;
#line 647 "VideoMonitor.c"
	} else {
#line 33 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
		_tmp0_ = FALSE;
#line 651 "VideoMonitor.c"
	}
#line 33 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	result = _tmp0_;
#line 33 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	return result;
#line 657 "VideoMonitor.c"
}


static void video_updates_class_init (VideoUpdatesClass * klass) {
#line 7 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	video_updates_parent_class = g_type_class_peek_parent (klass);
#line 7 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	((MonitorableUpdatesClass *) klass)->finalize = video_updates_finalize;
#line 7 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	g_type_class_add_private (klass, sizeof (VideoUpdatesPrivate));
#line 7 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	((VideoUpdatesClass *) klass)->set_check_interpretable = (void (*) (VideoUpdates *, gboolean)) video_updates_real_set_check_interpretable;
#line 7 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	((MonitorableUpdatesClass *) klass)->mark_online = (void (*) (MonitorableUpdates *)) video_updates_real_mark_online;
#line 7 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	((MonitorableUpdatesClass *) klass)->is_all_updated = (gboolean (*) (MonitorableUpdates *)) video_updates_real_is_all_updated;
#line 674 "VideoMonitor.c"
}


static void video_updates_instance_init (VideoUpdates * self) {
#line 7 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	self->priv = VIDEO_UPDATES_GET_PRIVATE (self);
#line 10 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	self->priv->check_interpretable = FALSE;
#line 683 "VideoMonitor.c"
}


static void video_updates_finalize (MonitorableUpdates * obj) {
	VideoUpdates * self;
#line 7 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_VIDEO_UPDATES, VideoUpdates);
#line 8 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	_g_object_unref0 (self->video);
#line 7 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	MONITORABLE_UPDATES_CLASS (video_updates_parent_class)->finalize (obj);
#line 695 "VideoMonitor.c"
}


GType video_updates_get_type (void) {
	static volatile gsize video_updates_type_id__volatile = 0;
	if (g_once_init_enter (&video_updates_type_id__volatile)) {
		static const GTypeInfo g_define_type_info = { sizeof (VideoUpdatesClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) video_updates_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (VideoUpdates), 0, (GInstanceInitFunc) video_updates_instance_init, NULL };
		GType video_updates_type_id;
		video_updates_type_id = g_type_register_static (TYPE_MONITORABLE_UPDATES, "VideoUpdates", &g_define_type_info, 0);
		g_once_init_leave (&video_updates_type_id__volatile, video_updates_type_id);
	}
	return video_updates_type_id__volatile;
}


VideoMonitor* video_monitor_construct (GType object_type, GCancellable* cancellable) {
	VideoMonitor * self = NULL;
	VideoSourceCollection* _tmp0_;
	GCancellable* _tmp1_;
#line 65 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	g_return_val_if_fail (G_IS_CANCELLABLE (cancellable), NULL);
#line 66 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	_tmp0_ = video_global;
#line 66 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	_tmp1_ = cancellable;
#line 66 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	self = (VideoMonitor*) media_monitor_construct (object_type, G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, TYPE_MEDIA_SOURCE_COLLECTION, MediaSourceCollection), _tmp1_);
#line 723 "VideoMonitor.c"
	{
		GeeIterator* _obj_it = NULL;
		VideoSourceCollection* _tmp2_;
		GeeCollection* _tmp3_;
		GeeCollection* _tmp4_;
		GeeIterator* _tmp5_;
		GeeIterator* _tmp6_;
#line 68 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
		_tmp2_ = video_global;
#line 68 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
		_tmp3_ = data_collection_get_all (G_TYPE_CHECK_INSTANCE_CAST (_tmp2_, TYPE_DATA_COLLECTION, DataCollection));
#line 68 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
		_tmp4_ = _tmp3_;
#line 68 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
		_tmp5_ = gee_iterable_iterator (G_TYPE_CHECK_INSTANCE_CAST (_tmp4_, GEE_TYPE_ITERABLE, GeeIterable));
#line 68 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
		_tmp6_ = _tmp5_;
#line 68 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
		_g_object_unref0 (_tmp4_);
#line 68 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
		_obj_it = _tmp6_;
#line 68 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
		while (TRUE) {
#line 747 "VideoMonitor.c"
			GeeIterator* _tmp7_;
			gboolean _tmp8_;
			DataObject* obj = NULL;
			GeeIterator* _tmp9_;
			gpointer _tmp10_;
			Video* video = NULL;
			DataObject* _tmp11_;
			Video* _tmp12_;
			Video* _tmp13_;
			Video* _tmp14_;
			gboolean _tmp15_;
#line 68 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
			_tmp7_ = _obj_it;
#line 68 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
			_tmp8_ = gee_iterator_next (_tmp7_);
#line 68 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
			if (!_tmp8_) {
#line 68 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
				break;
#line 767 "VideoMonitor.c"
			}
#line 68 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
			_tmp9_ = _obj_it;
#line 68 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
			_tmp10_ = gee_iterator_get (_tmp9_);
#line 68 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
			obj = (DataObject*) _tmp10_;
#line 69 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
			_tmp11_ = obj;
#line 69 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
			_tmp12_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp11_, TYPE_VIDEO) ? ((Video*) _tmp11_) : NULL);
#line 69 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
			video = _tmp12_;
#line 70 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
			_tmp13_ = video;
#line 70 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
			_vala_assert (_tmp13_ != NULL, "video != null");
#line 71 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
			_tmp14_ = video;
#line 71 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
			_tmp15_ = video_get_is_interpretable (_tmp14_);
#line 71 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
			if (!_tmp15_) {
#line 791 "VideoMonitor.c"
				Video* _tmp16_;
#line 72 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
				_tmp16_ = video;
#line 72 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
				video_monitor_set_check_interpretable (self, _tmp16_, TRUE);
#line 797 "VideoMonitor.c"
			}
#line 68 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
			_g_object_unref0 (video);
#line 68 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
			_g_object_unref0 (obj);
#line 803 "VideoMonitor.c"
		}
#line 68 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
		_g_object_unref0 (_obj_it);
#line 807 "VideoMonitor.c"
	}
#line 65 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	return self;
#line 811 "VideoMonitor.c"
}


VideoMonitor* video_monitor_new (GCancellable* cancellable) {
#line 65 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	return video_monitor_construct (TYPE_VIDEO_MONITOR, cancellable);
#line 818 "VideoMonitor.c"
}


static MonitorableUpdates* video_monitor_real_create_updates (MediaMonitor* base, Monitorable* monitorable) {
	VideoMonitor * self;
	MonitorableUpdates* result = NULL;
	Monitorable* _tmp0_;
	Monitorable* _tmp1_;
	VideoUpdates* _tmp2_;
#line 76 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_VIDEO_MONITOR, VideoMonitor);
#line 76 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	g_return_val_if_fail (IS_MONITORABLE (monitorable), NULL);
#line 77 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	_tmp0_ = monitorable;
#line 77 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	_vala_assert (G_TYPE_CHECK_INSTANCE_TYPE (_tmp0_, TYPE_VIDEO), "monitorable is Video");
#line 79 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	_tmp1_ = monitorable;
#line 79 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	_tmp2_ = video_updates_new (G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, TYPE_VIDEO, Video));
#line 79 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	result = G_TYPE_CHECK_INSTANCE_CAST (_tmp2_, TYPE_MONITORABLE_UPDATES, MonitorableUpdates);
#line 79 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	return result;
#line 844 "VideoMonitor.c"
}


static gpointer _data_collection_ref0 (gpointer self) {
#line 83 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	return self ? data_collection_ref (self) : NULL;
#line 851 "VideoMonitor.c"
}


static MediaSourceCollection* video_monitor_real_get_media_source_collection (MediaMonitor* base) {
	VideoMonitor * self;
	MediaSourceCollection* result = NULL;
	VideoSourceCollection* _tmp0_;
	MediaSourceCollection* _tmp1_;
#line 82 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_VIDEO_MONITOR, VideoMonitor);
#line 83 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	_tmp0_ = video_global;
#line 83 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	_tmp1_ = _data_collection_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, TYPE_MEDIA_SOURCE_COLLECTION, MediaSourceCollection));
#line 83 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	result = _tmp1_;
#line 83 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	return result;
#line 870 "VideoMonitor.c"
}


static gboolean video_monitor_real_is_file_represented (MediaMonitor* base, GFile* file) {
	VideoMonitor * self;
	gboolean result = FALSE;
	VideoSourceCollectionState state = 0;
	GFile* _tmp0_;
	VideoSourceCollectionState _tmp1_ = 0;
	Video* _tmp2_;
	Video* _tmp3_;
	gboolean _tmp4_;
#line 86 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_VIDEO_MONITOR, VideoMonitor);
#line 86 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	g_return_val_if_fail (G_IS_FILE (file), FALSE);
#line 88 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	_tmp0_ = file;
#line 88 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	_tmp2_ = video_monitor_get_state (self, _tmp0_, &_tmp1_);
#line 88 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	state = _tmp1_;
#line 88 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	_tmp3_ = _tmp2_;
#line 88 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	_tmp4_ = _tmp3_ != NULL;
#line 88 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	_g_object_unref0 (_tmp3_);
#line 88 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	result = _tmp4_;
#line 88 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	return result;
#line 903 "VideoMonitor.c"
}


static MediaMonitorDiscoveredFile video_monitor_real_notify_file_discovered (MediaMonitor* base, GFile* file, GFileInfo* info, Monitorable* * monitorable) {
	VideoMonitor * self;
	Monitorable* _vala_monitorable = NULL;
	MediaMonitorDiscoveredFile result = 0;
	VideoSourceCollectionState state = 0;
	Video* video = NULL;
	GFile* _tmp0_;
	VideoSourceCollectionState _tmp1_ = 0;
	Video* _tmp2_;
	Video* _tmp3_;
	VideoSourceCollectionState _tmp4_;
#line 91 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_VIDEO_MONITOR, VideoMonitor);
#line 91 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	g_return_val_if_fail (G_IS_FILE (file), 0);
#line 91 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	g_return_val_if_fail (G_IS_FILE_INFO (info), 0);
#line 94 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	_tmp0_ = file;
#line 94 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	_tmp2_ = video_monitor_get_state (self, _tmp0_, &_tmp1_);
#line 94 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	state = _tmp1_;
#line 94 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	video = _tmp2_;
#line 95 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	_tmp3_ = video;
#line 95 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	if (_tmp3_ == NULL) {
#line 96 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
		_g_object_unref0 (_vala_monitorable);
#line 96 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
		_vala_monitorable = NULL;
#line 98 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
		result = MEDIA_MONITOR_DISCOVERED_FILE_UNKNOWN;
#line 98 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
		_g_object_unref0 (video);
#line 98 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
		if (monitorable) {
#line 98 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
			*monitorable = _vala_monitorable;
#line 948 "VideoMonitor.c"
		} else {
#line 98 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
			_g_object_unref0 (_vala_monitorable);
#line 952 "VideoMonitor.c"
		}
#line 98 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
		return result;
#line 956 "VideoMonitor.c"
	}
#line 101 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	_tmp4_ = state;
#line 101 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	switch (_tmp4_) {
#line 101 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
		case VIDEO_SOURCE_COLLECTION_STATE_ONLINE:
#line 101 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
		case VIDEO_SOURCE_COLLECTION_STATE_OFFLINE:
#line 966 "VideoMonitor.c"
		{
			Video* _tmp5_;
			Monitorable* _tmp6_;
#line 104 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
			_tmp5_ = video;
#line 104 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
			_tmp6_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp5_, TYPE_MONITORABLE, Monitorable));
#line 104 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
			_g_object_unref0 (_vala_monitorable);
#line 104 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
			_vala_monitorable = _tmp6_;
#line 106 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
			result = MEDIA_MONITOR_DISCOVERED_FILE_REPRESENTED;
#line 106 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
			_g_object_unref0 (video);
#line 106 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
			if (monitorable) {
#line 106 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
				*monitorable = _vala_monitorable;
#line 986 "VideoMonitor.c"
			} else {
#line 106 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
				_g_object_unref0 (_vala_monitorable);
#line 990 "VideoMonitor.c"
			}
#line 106 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
			return result;
#line 994 "VideoMonitor.c"
		}
		default:
#line 101 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
		case VIDEO_SOURCE_COLLECTION_STATE_TRASH:
#line 999 "VideoMonitor.c"
		{
#line 111 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
			_g_object_unref0 (_vala_monitorable);
#line 111 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
			_vala_monitorable = NULL;
#line 113 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
			result = MEDIA_MONITOR_DISCOVERED_FILE_IGNORE;
#line 113 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
			_g_object_unref0 (video);
#line 113 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
			if (monitorable) {
#line 113 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
				*monitorable = _vala_monitorable;
#line 1013 "VideoMonitor.c"
			} else {
#line 113 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
				_g_object_unref0 (_vala_monitorable);
#line 1017 "VideoMonitor.c"
			}
#line 113 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
			return result;
#line 1021 "VideoMonitor.c"
		}
	}
#line 91 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	_g_object_unref0 (video);
#line 91 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	if (monitorable) {
#line 91 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
		*monitorable = _vala_monitorable;
#line 1030 "VideoMonitor.c"
	} else {
#line 91 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
		_g_object_unref0 (_vala_monitorable);
#line 1034 "VideoMonitor.c"
	}
}


static GeeCollection* video_monitor_real_candidates_for_unknown_file (MediaMonitor* base, GFile* file, GFileInfo* info, MediaMonitorDiscoveredFile* _result_) {
	VideoMonitor * self;
	MediaMonitorDiscoveredFile _vala_result = 0;
	GeeCollection* result = NULL;
	GeeCollection* matched = NULL;
	GeeArrayList* _tmp0_;
	VideoSourceCollection* _tmp1_;
	GFileInfo* _tmp2_;
#line 117 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_VIDEO_MONITOR, VideoMonitor);
#line 117 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	g_return_val_if_fail (G_IS_FILE (file), NULL);
#line 117 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	g_return_val_if_fail (G_IS_FILE_INFO (info), NULL);
#line 119 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	_tmp0_ = gee_array_list_new (TYPE_VIDEO, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref, NULL, NULL, NULL);
#line 119 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	matched = G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, GEE_TYPE_COLLECTION, GeeCollection);
#line 120 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	_tmp1_ = video_global;
#line 120 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	_tmp2_ = info;
#line 120 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	video_source_collection_fetch_by_matching_backing (_tmp1_, _tmp2_, matched);
#line 122 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	_vala_result = MEDIA_MONITOR_DISCOVERED_FILE_UNKNOWN;
#line 124 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	result = matched;
#line 124 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	if (_result_) {
#line 124 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
		*_result_ = _vala_result;
#line 1071 "VideoMonitor.c"
	}
#line 124 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	return result;
#line 1075 "VideoMonitor.c"
}


static gboolean video_monitor_real_notify_file_created (MediaMonitor* base, GFile* file, GFileInfo* info) {
	VideoMonitor * self;
	gboolean result = FALSE;
	VideoSourceCollectionState state = 0;
	Video* video = NULL;
	GFile* _tmp0_;
	VideoSourceCollectionState _tmp1_ = 0;
	Video* _tmp2_;
	Video* _tmp3_;
	Video* _tmp4_;
#line 127 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_VIDEO_MONITOR, VideoMonitor);
#line 127 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	g_return_val_if_fail (G_IS_FILE (file), FALSE);
#line 127 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	g_return_val_if_fail (G_IS_FILE_INFO (info), FALSE);
#line 129 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	_tmp0_ = file;
#line 129 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	_tmp2_ = video_monitor_get_state (self, _tmp0_, &_tmp1_);
#line 129 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	state = _tmp1_;
#line 129 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	video = _tmp2_;
#line 130 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	_tmp3_ = video;
#line 130 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	if (_tmp3_ == NULL) {
#line 131 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
		result = FALSE;
#line 131 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
		_g_object_unref0 (video);
#line 131 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
		return result;
#line 1113 "VideoMonitor.c"
	}
#line 133 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	_tmp4_ = video;
#line 133 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	media_monitor_update_online (G_TYPE_CHECK_INSTANCE_CAST (self, TYPE_MEDIA_MONITOR, MediaMonitor), G_TYPE_CHECK_INSTANCE_CAST (_tmp4_, TYPE_MONITORABLE, Monitorable));
#line 135 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	result = TRUE;
#line 135 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	_g_object_unref0 (video);
#line 135 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	return result;
#line 1125 "VideoMonitor.c"
}


static gboolean video_monitor_real_notify_file_moved (MediaMonitor* base, GFile* old_file, GFile* new_file, GFileInfo* new_file_info) {
	VideoMonitor * self;
	gboolean result = FALSE;
	VideoSourceCollectionState old_state = 0;
	Video* old_video = NULL;
	GFile* _tmp0_;
	VideoSourceCollectionState _tmp1_ = 0;
	Video* _tmp2_;
	VideoSourceCollectionState new_state = 0;
	Video* new_video = NULL;
	GFile* _tmp3_;
	VideoSourceCollectionState _tmp4_ = 0;
	Video* _tmp5_;
	gboolean _tmp6_ = FALSE;
	Video* _tmp7_;
#line 138 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_VIDEO_MONITOR, VideoMonitor);
#line 138 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	g_return_val_if_fail (G_IS_FILE (old_file), FALSE);
#line 138 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	g_return_val_if_fail (G_IS_FILE (new_file), FALSE);
#line 138 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	g_return_val_if_fail (G_IS_FILE_INFO (new_file_info), FALSE);
#line 140 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	_tmp0_ = old_file;
#line 140 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	_tmp2_ = video_monitor_get_state (self, _tmp0_, &_tmp1_);
#line 140 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	old_state = _tmp1_;
#line 140 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	old_video = _tmp2_;
#line 143 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	_tmp3_ = new_file;
#line 143 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	_tmp5_ = video_monitor_get_state (self, _tmp3_, &_tmp4_);
#line 143 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	new_state = _tmp4_;
#line 143 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	new_video = _tmp5_;
#line 157 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	_tmp7_ = old_video;
#line 157 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	if (_tmp7_ != NULL) {
#line 1172 "VideoMonitor.c"
		Video* _tmp8_;
#line 157 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
		_tmp8_ = new_video;
#line 157 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
		_tmp6_ = _tmp8_ == NULL;
#line 1178 "VideoMonitor.c"
	} else {
#line 157 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
		_tmp6_ = FALSE;
#line 1182 "VideoMonitor.c"
	}
#line 157 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	if (_tmp6_) {
#line 1186 "VideoMonitor.c"
		Video* _tmp9_;
		GFile* _tmp10_;
#line 159 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
		_tmp9_ = old_video;
#line 159 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
		_tmp10_ = new_file;
#line 159 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
		media_monitor_update_master_file (G_TYPE_CHECK_INSTANCE_CAST (self, TYPE_MEDIA_MONITOR, MediaMonitor), G_TYPE_CHECK_INSTANCE_CAST (_tmp9_, TYPE_MONITORABLE, Monitorable), _tmp10_);
#line 1195 "VideoMonitor.c"
	} else {
		gboolean _tmp11_ = FALSE;
		Video* _tmp12_;
#line 160 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
		_tmp12_ = old_video;
#line 160 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
		if (_tmp12_ == NULL) {
#line 1203 "VideoMonitor.c"
			Video* _tmp13_;
#line 160 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
			_tmp13_ = new_video;
#line 160 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
			_tmp11_ = _tmp13_ != NULL;
#line 1209 "VideoMonitor.c"
		} else {
#line 160 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
			_tmp11_ = FALSE;
#line 1213 "VideoMonitor.c"
		}
#line 160 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
		if (_tmp11_) {
#line 1217 "VideoMonitor.c"
			Video* _tmp14_;
#line 162 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
			_tmp14_ = new_video;
#line 162 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
			video_monitor_set_check_interpretable (self, _tmp14_, TRUE);
#line 1223 "VideoMonitor.c"
		} else {
			gboolean _tmp15_ = FALSE;
			Video* _tmp16_;
#line 163 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
			_tmp16_ = old_video;
#line 163 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
			if (_tmp16_ == NULL) {
#line 1231 "VideoMonitor.c"
				Video* _tmp17_;
#line 163 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
				_tmp17_ = new_video;
#line 163 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
				_tmp15_ = _tmp17_ == NULL;
#line 1237 "VideoMonitor.c"
			} else {
#line 163 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
				_tmp15_ = FALSE;
#line 1241 "VideoMonitor.c"
			}
#line 163 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
			if (_tmp15_) {
#line 165 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
				result = FALSE;
#line 165 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
				_g_object_unref0 (new_video);
#line 165 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
				_g_object_unref0 (old_video);
#line 165 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
				return result;
#line 1253 "VideoMonitor.c"
			} else {
				gboolean _tmp18_ = FALSE;
				Video* _tmp19_;
				Video* _tmp21_;
				Video* _tmp22_;
#line 167 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
				_tmp19_ = old_video;
#line 167 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
				if (_tmp19_ != NULL) {
#line 1263 "VideoMonitor.c"
					Video* _tmp20_;
#line 167 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
					_tmp20_ = new_video;
#line 167 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
					_tmp18_ = _tmp20_ != NULL;
#line 1269 "VideoMonitor.c"
				} else {
#line 167 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
					_tmp18_ = FALSE;
#line 1273 "VideoMonitor.c"
				}
#line 167 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
				_vala_assert (_tmp18_, "old_video != null && new_video != null");
#line 170 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
				_tmp21_ = old_video;
#line 170 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
				media_monitor_update_offline (G_TYPE_CHECK_INSTANCE_CAST (self, TYPE_MEDIA_MONITOR, MediaMonitor), G_TYPE_CHECK_INSTANCE_CAST (_tmp21_, TYPE_MONITORABLE, Monitorable));
#line 171 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
				_tmp22_ = new_video;
#line 171 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
				video_monitor_set_check_interpretable (self, _tmp22_, TRUE);
#line 1285 "VideoMonitor.c"
			}
		}
	}
#line 174 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	result = TRUE;
#line 174 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	_g_object_unref0 (new_video);
#line 174 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	_g_object_unref0 (old_video);
#line 174 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	return result;
#line 1297 "VideoMonitor.c"
}


static gboolean video_monitor_real_notify_file_altered (MediaMonitor* base, GFile* file) {
	VideoMonitor * self;
	gboolean result = FALSE;
	VideoSourceCollectionState state = 0;
	GFile* _tmp0_;
	VideoSourceCollectionState _tmp1_ = 0;
	Video* _tmp2_;
	Video* _tmp3_;
	gboolean _tmp4_;
#line 177 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_VIDEO_MONITOR, VideoMonitor);
#line 177 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	g_return_val_if_fail (G_IS_FILE (file), FALSE);
#line 179 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	_tmp0_ = file;
#line 179 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	_tmp2_ = video_monitor_get_state (self, _tmp0_, &_tmp1_);
#line 179 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	state = _tmp1_;
#line 179 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	_tmp3_ = _tmp2_;
#line 179 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	_tmp4_ = _tmp3_ != NULL;
#line 179 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	_g_object_unref0 (_tmp3_);
#line 179 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	result = _tmp4_;
#line 179 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	return result;
#line 1330 "VideoMonitor.c"
}


static gboolean video_monitor_real_notify_file_attributes_altered (MediaMonitor* base, GFile* file) {
	VideoMonitor * self;
	gboolean result = FALSE;
	VideoSourceCollectionState state = 0;
	Video* video = NULL;
	GFile* _tmp0_;
	VideoSourceCollectionState _tmp1_ = 0;
	Video* _tmp2_;
	Video* _tmp3_;
	Video* _tmp4_;
	Video* _tmp5_;
#line 182 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_VIDEO_MONITOR, VideoMonitor);
#line 182 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	g_return_val_if_fail (G_IS_FILE (file), FALSE);
#line 184 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	_tmp0_ = file;
#line 184 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	_tmp2_ = video_monitor_get_state (self, _tmp0_, &_tmp1_);
#line 184 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	state = _tmp1_;
#line 184 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	video = _tmp2_;
#line 185 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	_tmp3_ = video;
#line 185 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	if (_tmp3_ == NULL) {
#line 186 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
		result = FALSE;
#line 186 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
		_g_object_unref0 (video);
#line 186 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
		return result;
#line 1367 "VideoMonitor.c"
	}
#line 188 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	_tmp4_ = video;
#line 188 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	media_monitor_update_master_file_info_altered (G_TYPE_CHECK_INSTANCE_CAST (self, TYPE_MEDIA_MONITOR, MediaMonitor), G_TYPE_CHECK_INSTANCE_CAST (_tmp4_, TYPE_MONITORABLE, Monitorable));
#line 189 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	_tmp5_ = video;
#line 189 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	media_monitor_update_master_file_in_alteration (G_TYPE_CHECK_INSTANCE_CAST (self, TYPE_MEDIA_MONITOR, MediaMonitor), G_TYPE_CHECK_INSTANCE_CAST (_tmp5_, TYPE_MONITORABLE, Monitorable), TRUE);
#line 191 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	result = TRUE;
#line 191 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	_g_object_unref0 (video);
#line 191 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	return result;
#line 1383 "VideoMonitor.c"
}


static gboolean video_monitor_real_notify_file_alteration_completed (MediaMonitor* base, GFile* file, GFileInfo* info) {
	VideoMonitor * self;
	gboolean result = FALSE;
	VideoSourceCollectionState state = 0;
	Video* video = NULL;
	GFile* _tmp0_;
	VideoSourceCollectionState _tmp1_ = 0;
	Video* _tmp2_;
	Video* _tmp3_;
	Video* _tmp4_;
	GFileInfo* _tmp5_;
#line 194 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_VIDEO_MONITOR, VideoMonitor);
#line 194 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	g_return_val_if_fail (G_IS_FILE (file), FALSE);
#line 194 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	g_return_val_if_fail (G_IS_FILE_INFO (info), FALSE);
#line 196 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	_tmp0_ = file;
#line 196 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	_tmp2_ = video_monitor_get_state (self, _tmp0_, &_tmp1_);
#line 196 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	state = _tmp1_;
#line 196 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	video = _tmp2_;
#line 197 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	_tmp3_ = video;
#line 197 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	if (_tmp3_ == NULL) {
#line 198 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
		result = FALSE;
#line 198 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
		_g_object_unref0 (video);
#line 198 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
		return result;
#line 1422 "VideoMonitor.c"
	}
#line 200 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	_tmp4_ = video;
#line 200 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	_tmp5_ = info;
#line 200 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	media_monitor_update_master_file_alterations_completed (G_TYPE_CHECK_INSTANCE_CAST (self, TYPE_MEDIA_MONITOR, MediaMonitor), G_TYPE_CHECK_INSTANCE_CAST (_tmp4_, TYPE_MONITORABLE, Monitorable), _tmp5_);
#line 202 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	result = TRUE;
#line 202 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	_g_object_unref0 (video);
#line 202 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	return result;
#line 1436 "VideoMonitor.c"
}


static gboolean video_monitor_real_notify_file_deleted (MediaMonitor* base, GFile* file) {
	VideoMonitor * self;
	gboolean result = FALSE;
	VideoSourceCollectionState state = 0;
	Video* video = NULL;
	GFile* _tmp0_;
	VideoSourceCollectionState _tmp1_ = 0;
	Video* _tmp2_;
	Video* _tmp3_;
	Video* _tmp4_;
	Video* _tmp5_;
#line 205 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_VIDEO_MONITOR, VideoMonitor);
#line 205 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	g_return_val_if_fail (G_IS_FILE (file), FALSE);
#line 207 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	_tmp0_ = file;
#line 207 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	_tmp2_ = video_monitor_get_state (self, _tmp0_, &_tmp1_);
#line 207 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	state = _tmp1_;
#line 207 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	video = _tmp2_;
#line 208 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	_tmp3_ = video;
#line 208 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	if (_tmp3_ == NULL) {
#line 209 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
		result = FALSE;
#line 209 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
		_g_object_unref0 (video);
#line 209 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
		return result;
#line 1473 "VideoMonitor.c"
	}
#line 211 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	_tmp4_ = video;
#line 211 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	media_monitor_update_master_file_in_alteration (G_TYPE_CHECK_INSTANCE_CAST (self, TYPE_MEDIA_MONITOR, MediaMonitor), G_TYPE_CHECK_INSTANCE_CAST (_tmp4_, TYPE_MONITORABLE, Monitorable), FALSE);
#line 212 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	_tmp5_ = video;
#line 212 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	media_monitor_update_offline (G_TYPE_CHECK_INSTANCE_CAST (self, TYPE_MEDIA_MONITOR, MediaMonitor), G_TYPE_CHECK_INSTANCE_CAST (_tmp5_, TYPE_MONITORABLE, Monitorable));
#line 214 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	result = TRUE;
#line 214 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	_g_object_unref0 (video);
#line 214 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	return result;
#line 1489 "VideoMonitor.c"
}


static Video* video_monitor_get_state (VideoMonitor* self, GFile* file, VideoSourceCollectionState* state) {
	VideoSourceCollectionState _vala_state = 0;
	Video* result = NULL;
	GFile* real_file = NULL;
	GFile* _tmp25_ = NULL;
	GFile* _tmp26_;
	VideoSourceCollection* _tmp28_;
	VideoSourceCollectionState _tmp29_ = 0;
	Video* _tmp30_;
#line 217 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	g_return_val_if_fail (IS_VIDEO_MONITOR (self), NULL);
#line 217 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	g_return_val_if_fail (G_IS_FILE (file), NULL);
#line 218 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	real_file = NULL;
#line 1508 "VideoMonitor.c"
	{
		GeeIterator* _monitorable_it = NULL;
		GeeCollection* _tmp0_;
		GeeCollection* _tmp1_;
		GeeIterator* _tmp2_;
		GeeIterator* _tmp3_;
#line 219 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
		_tmp0_ = media_monitor_get_monitorables (G_TYPE_CHECK_INSTANCE_CAST (self, TYPE_MEDIA_MONITOR, MediaMonitor));
#line 219 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
		_tmp1_ = _tmp0_;
#line 219 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
		_tmp2_ = gee_iterable_iterator (G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, GEE_TYPE_ITERABLE, GeeIterable));
#line 219 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
		_tmp3_ = _tmp2_;
#line 219 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
		_g_object_unref0 (_tmp1_);
#line 219 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
		_monitorable_it = _tmp3_;
#line 219 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
		while (TRUE) {
#line 1529 "VideoMonitor.c"
			GeeIterator* _tmp4_;
			gboolean _tmp5_;
			Monitorable* monitorable = NULL;
			GeeIterator* _tmp6_;
			gpointer _tmp7_;
			Video* video = NULL;
			Monitorable* _tmp8_;
			Video* _tmp9_;
			VideoUpdates* updates = NULL;
			Video* _tmp10_;
			VideoUpdates* _tmp11_;
			VideoUpdates* _tmp12_;
			gboolean _tmp13_ = FALSE;
			VideoUpdates* _tmp14_;
			GFile* _tmp15_;
			GFile* _tmp16_;
			gboolean _tmp17_;
#line 219 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
			_tmp4_ = _monitorable_it;
#line 219 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
			_tmp5_ = gee_iterator_next (_tmp4_);
#line 219 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
			if (!_tmp5_) {
#line 219 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
				break;
#line 1555 "VideoMonitor.c"
			}
#line 219 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
			_tmp6_ = _monitorable_it;
#line 219 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
			_tmp7_ = gee_iterator_get (_tmp6_);
#line 219 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
			monitorable = (Monitorable*) _tmp7_;
#line 220 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
			_tmp8_ = monitorable;
#line 220 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
			_tmp9_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp8_, TYPE_VIDEO, Video));
#line 220 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
			video = _tmp9_;
#line 222 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
			_tmp10_ = video;
#line 222 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
			_tmp11_ = video_monitor_get_existing_video_updates (self, _tmp10_);
#line 222 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
			updates = _tmp11_;
#line 223 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
			_tmp12_ = updates;
#line 223 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
			if (_tmp12_ == NULL) {
#line 224 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
				_monitorable_updates_unref0 (updates);
#line 224 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
				_g_object_unref0 (video);
#line 224 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
				_g_object_unref0 (monitorable);
#line 224 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
				continue;
#line 1587 "VideoMonitor.c"
			}
#line 226 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
			_tmp14_ = updates;
#line 226 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
			_tmp15_ = monitorable_updates_get_master_file (G_TYPE_CHECK_INSTANCE_CAST (_tmp14_, TYPE_MONITORABLE_UPDATES, MonitorableUpdates));
#line 226 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
			_tmp16_ = _tmp15_;
#line 226 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
			_tmp17_ = _tmp16_ != NULL;
#line 226 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
			_g_object_unref0 (_tmp16_);
#line 226 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
			if (_tmp17_) {
#line 1601 "VideoMonitor.c"
				VideoUpdates* _tmp18_;
				GFile* _tmp19_;
				GFile* _tmp20_;
				GFile* _tmp21_;
				gboolean _tmp22_;
#line 226 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
				_tmp18_ = updates;
#line 226 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
				_tmp19_ = monitorable_updates_get_master_file (G_TYPE_CHECK_INSTANCE_CAST (_tmp18_, TYPE_MONITORABLE_UPDATES, MonitorableUpdates));
#line 226 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
				_tmp20_ = _tmp19_;
#line 226 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
				_tmp21_ = file;
#line 226 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
				_tmp22_ = g_file_equal (_tmp20_, _tmp21_);
#line 226 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
				_tmp13_ = _tmp22_;
#line 226 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
				_g_object_unref0 (_tmp20_);
#line 1621 "VideoMonitor.c"
			} else {
#line 226 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
				_tmp13_ = FALSE;
#line 1625 "VideoMonitor.c"
			}
#line 226 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
			if (_tmp13_) {
#line 1629 "VideoMonitor.c"
				Video* _tmp23_;
				GFile* _tmp24_;
#line 227 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
				_tmp23_ = video;
#line 227 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
				_tmp24_ = media_source_get_master_file (G_TYPE_CHECK_INSTANCE_CAST (_tmp23_, TYPE_MEDIA_SOURCE, MediaSource));
#line 227 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
				_g_object_unref0 (real_file);
#line 227 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
				real_file = _tmp24_;
#line 229 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
				_monitorable_updates_unref0 (updates);
#line 229 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
				_g_object_unref0 (video);
#line 229 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
				_g_object_unref0 (monitorable);
#line 229 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
				break;
#line 1648 "VideoMonitor.c"
			}
#line 219 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
			_monitorable_updates_unref0 (updates);
#line 219 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
			_g_object_unref0 (video);
#line 219 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
			_g_object_unref0 (monitorable);
#line 1656 "VideoMonitor.c"
		}
#line 219 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
		_g_object_unref0 (_monitorable_it);
#line 1660 "VideoMonitor.c"
	}
#line 233 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	_tmp26_ = real_file;
#line 233 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	_tmp25_ = _tmp26_;
#line 233 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	if (_tmp25_ == NULL) {
#line 1668 "VideoMonitor.c"
		GFile* _tmp27_;
#line 233 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
		_tmp27_ = file;
#line 233 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
		_tmp25_ = _tmp27_;
#line 1674 "VideoMonitor.c"
	}
#line 233 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	_tmp28_ = video_global;
#line 233 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	_tmp30_ = video_source_collection_get_state_by_file (_tmp28_, _tmp25_, &_tmp29_);
#line 233 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	_vala_state = _tmp29_;
#line 233 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	result = _tmp30_;
#line 233 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	_g_object_unref0 (real_file);
#line 233 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	if (state) {
#line 233 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
		*state = _vala_state;
#line 1690 "VideoMonitor.c"
	}
#line 233 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	return result;
#line 1694 "VideoMonitor.c"
}


VideoUpdates* video_monitor_fetch_video_updates (VideoMonitor* self, Video* video) {
	VideoUpdates* result = NULL;
	VideoUpdates* updates = NULL;
	Video* _tmp0_;
	MonitorableUpdates* _tmp1_;
	VideoUpdates* _tmp2_;
#line 236 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	g_return_val_if_fail (IS_VIDEO_MONITOR (self), NULL);
#line 236 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	g_return_val_if_fail (IS_VIDEO (video), NULL);
#line 237 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	_tmp0_ = video;
#line 237 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	_tmp1_ = media_monitor_fetch_updates (G_TYPE_CHECK_INSTANCE_CAST (self, TYPE_MEDIA_MONITOR, MediaMonitor), G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, TYPE_MONITORABLE, Monitorable));
#line 237 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	_tmp2_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp1_, TYPE_VIDEO_UPDATES) ? ((VideoUpdates*) _tmp1_) : NULL;
#line 237 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	if (_tmp2_ == NULL) {
#line 237 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
		_monitorable_updates_unref0 (_tmp1_);
#line 1718 "VideoMonitor.c"
	}
#line 237 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	updates = _tmp2_;
#line 238 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	_vala_assert (updates != NULL, "updates != null");
#line 240 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	result = updates;
#line 240 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	return result;
#line 1728 "VideoMonitor.c"
}


VideoUpdates* video_monitor_get_existing_video_updates (VideoMonitor* self, Video* video) {
	VideoUpdates* result = NULL;
	Video* _tmp0_;
	MonitorableUpdates* _tmp1_;
	VideoUpdates* _tmp2_;
#line 243 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	g_return_val_if_fail (IS_VIDEO_MONITOR (self), NULL);
#line 243 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	g_return_val_if_fail (IS_VIDEO (video), NULL);
#line 244 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	_tmp0_ = video;
#line 244 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	_tmp1_ = media_monitor_get_existing_updates (G_TYPE_CHECK_INSTANCE_CAST (self, TYPE_MEDIA_MONITOR, MediaMonitor), G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, TYPE_MONITORABLE, Monitorable));
#line 244 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	_tmp2_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp1_, TYPE_VIDEO_UPDATES) ? ((VideoUpdates*) _tmp1_) : NULL;
#line 244 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	if (_tmp2_ == NULL) {
#line 244 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
		_monitorable_updates_unref0 (_tmp1_);
#line 1751 "VideoMonitor.c"
	}
#line 244 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	result = _tmp2_;
#line 244 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	return result;
#line 1757 "VideoMonitor.c"
}


void video_monitor_set_check_interpretable (VideoMonitor* self, Video* video, gboolean check) {
	Video* _tmp0_;
	VideoUpdates* _tmp1_;
	VideoUpdates* _tmp2_;
	gboolean _tmp3_;
#line 247 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	g_return_if_fail (IS_VIDEO_MONITOR (self));
#line 247 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	g_return_if_fail (IS_VIDEO (video));
#line 248 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	_tmp0_ = video;
#line 248 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	_tmp1_ = video_monitor_fetch_video_updates (self, _tmp0_);
#line 248 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	_tmp2_ = _tmp1_;
#line 248 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	_tmp3_ = check;
#line 248 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	video_updates_set_check_interpretable (_tmp2_, _tmp3_);
#line 248 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	_monitorable_updates_unref0 (_tmp2_);
#line 1782 "VideoMonitor.c"
}


static gpointer _monitorable_updates_ref0 (gpointer self) {
#line 266 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	return self ? monitorable_updates_ref (self) : NULL;
#line 1789 "VideoMonitor.c"
}


static void _video_monitor_on_interpretable_check_complete_completion_callback (BackgroundJob* job, gpointer self) {
#line 287 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	video_monitor_on_interpretable_check_complete ((VideoMonitor*) self, job);
#line 1796 "VideoMonitor.c"
}


static void video_monitor_real_process_updates (MediaMonitor* base, GeeCollection* all_updates, TransactionController* controller, gint* op_count, GError** error) {
	VideoMonitor * self;
	GeeCollection* _tmp0_;
	TransactionController* _tmp1_;
	GeeArrayList* check = NULL;
	GeeArrayList* _tmp26_;
	GError * _inner_error_ = NULL;
#line 251 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	self = G_TYPE_CHECK_INSTANCE_CAST (base, TYPE_VIDEO_MONITOR, VideoMonitor);
#line 251 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	g_return_if_fail (GEE_IS_COLLECTION (all_updates));
#line 251 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	g_return_if_fail (IS_TRANSACTION_CONTROLLER (controller));
#line 253 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	_tmp0_ = all_updates;
#line 253 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	_tmp1_ = controller;
#line 253 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	MEDIA_MONITOR_CLASS (video_monitor_parent_class)->process_updates (G_TYPE_CHECK_INSTANCE_CAST (self, TYPE_MEDIA_MONITOR, MediaMonitor), _tmp0_, _tmp1_, op_count, &_inner_error_);
#line 253 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	if (G_UNLIKELY (_inner_error_ != NULL)) {
#line 253 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
		g_propagate_error (error, _inner_error_);
#line 253 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
		return;
#line 1825 "VideoMonitor.c"
	}
#line 255 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	check = NULL;
#line 1829 "VideoMonitor.c"
	{
		GeeIterator* _monitorable_updates_it = NULL;
		GeeCollection* _tmp2_;
		GeeIterator* _tmp3_;
#line 257 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
		_tmp2_ = all_updates;
#line 257 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
		_tmp3_ = gee_iterable_iterator (G_TYPE_CHECK_INSTANCE_CAST (_tmp2_, GEE_TYPE_ITERABLE, GeeIterable));
#line 257 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
		_monitorable_updates_it = _tmp3_;
#line 257 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
		while (TRUE) {
#line 1842 "VideoMonitor.c"
			GeeIterator* _tmp4_;
			gboolean _tmp5_;
			MonitorableUpdates* monitorable_updates = NULL;
			GeeIterator* _tmp6_;
			gpointer _tmp7_;
			gint _tmp8_;
			gboolean _tmp9_ = FALSE;
			GeeArrayList* _tmp10_;
			VideoUpdates* updates = NULL;
			MonitorableUpdates* _tmp14_;
			VideoUpdates* _tmp15_;
			VideoUpdates* _tmp16_;
			VideoUpdates* _tmp17_;
			gboolean _tmp18_;
#line 257 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
			_tmp4_ = _monitorable_updates_it;
#line 257 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
			_tmp5_ = gee_iterator_next (_tmp4_);
#line 257 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
			if (!_tmp5_) {
#line 257 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
				break;
#line 1865 "VideoMonitor.c"
			}
#line 257 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
			_tmp6_ = _monitorable_updates_it;
#line 257 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
			_tmp7_ = gee_iterator_get (_tmp6_);
#line 257 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
			monitorable_updates = (MonitorableUpdates*) _tmp7_;
#line 258 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
			_tmp8_ = *op_count;
#line 258 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
			if (_tmp8_ >= MEDIA_MONITOR_MAX_OPERATIONS_PER_CYCLE) {
#line 259 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
				_monitorable_updates_unref0 (monitorable_updates);
#line 259 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
				break;
#line 1881 "VideoMonitor.c"
			}
#line 263 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
			_tmp10_ = check;
#line 263 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
			if (_tmp10_ != NULL) {
#line 1887 "VideoMonitor.c"
				GeeArrayList* _tmp11_;
				gint _tmp12_;
				gint _tmp13_;
#line 263 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
				_tmp11_ = check;
#line 263 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
				_tmp12_ = gee_abstract_collection_get_size (G_TYPE_CHECK_INSTANCE_CAST (_tmp11_, GEE_TYPE_ABSTRACT_COLLECTION, GeeAbstractCollection));
#line 263 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
				_tmp13_ = _tmp12_;
#line 263 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
				_tmp9_ = _tmp13_ >= VIDEO_MONITOR_MAX_INTERPRETABLE_CHECKS_PER_CYCLE;
#line 1899 "VideoMonitor.c"
			} else {
#line 263 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
				_tmp9_ = FALSE;
#line 1903 "VideoMonitor.c"
			}
#line 263 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
			if (_tmp9_) {
#line 264 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
				_monitorable_updates_unref0 (monitorable_updates);
#line 264 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
				break;
#line 1911 "VideoMonitor.c"
			}
#line 266 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
			_tmp14_ = monitorable_updates;
#line 266 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
			_tmp15_ = _monitorable_updates_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp14_, TYPE_VIDEO_UPDATES) ? ((VideoUpdates*) _tmp14_) : NULL);
#line 266 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
			updates = _tmp15_;
#line 267 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
			_tmp16_ = updates;
#line 267 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
			if (_tmp16_ == NULL) {
#line 268 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
				_monitorable_updates_unref0 (updates);
#line 268 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
				_monitorable_updates_unref0 (monitorable_updates);
#line 268 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
				continue;
#line 1929 "VideoMonitor.c"
			}
#line 270 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
			_tmp17_ = updates;
#line 270 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
			_tmp18_ = video_updates_is_check_interpretable (_tmp17_);
#line 270 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
			if (_tmp18_) {
#line 1937 "VideoMonitor.c"
				GeeArrayList* _tmp19_;
				GeeArrayList* _tmp21_;
				VideoUpdates* _tmp22_;
				Video* _tmp23_;
				VideoUpdates* _tmp24_;
				gint _tmp25_;
#line 271 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
				_tmp19_ = check;
#line 271 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
				if (_tmp19_ == NULL) {
#line 1948 "VideoMonitor.c"
					GeeArrayList* _tmp20_;
#line 272 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
					_tmp20_ = gee_array_list_new (TYPE_VIDEO, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref, NULL, NULL, NULL);
#line 272 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
					_g_object_unref0 (check);
#line 272 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
					check = _tmp20_;
#line 1956 "VideoMonitor.c"
				}
#line 274 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
				_tmp21_ = check;
#line 274 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
				_tmp22_ = updates;
#line 274 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
				_tmp23_ = _tmp22_->video;
#line 274 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
				gee_abstract_collection_add (G_TYPE_CHECK_INSTANCE_CAST (_tmp21_, GEE_TYPE_ABSTRACT_COLLECTION, GeeAbstractCollection), _tmp23_);
#line 275 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
				_tmp24_ = updates;
#line 275 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
				video_updates_set_check_interpretable (_tmp24_, FALSE);
#line 276 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
				_tmp25_ = *op_count;
#line 276 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
				*op_count = _tmp25_ + 1;
#line 1974 "VideoMonitor.c"
			}
#line 257 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
			_monitorable_updates_unref0 (updates);
#line 257 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
			_monitorable_updates_unref0 (monitorable_updates);
#line 1980 "VideoMonitor.c"
		}
#line 257 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
		_g_object_unref0 (_monitorable_updates_it);
#line 1984 "VideoMonitor.c"
	}
#line 280 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	_tmp26_ = check;
#line 280 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	if (_tmp26_ != NULL) {
#line 1990 "VideoMonitor.c"
		GeeArrayList* _tmp27_;
		gint _tmp28_;
		gint _tmp29_;
		gchar* _tmp30_;
		gchar* _tmp31_;
		guint64 _tmp32_;
		GeeArrayList* _tmp33_;
		gint _tmp34_;
		gint _tmp35_;
#line 281 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
		_tmp27_ = check;
#line 281 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
		_tmp28_ = gee_abstract_collection_get_size (G_TYPE_CHECK_INSTANCE_CAST (_tmp27_, GEE_TYPE_ABSTRACT_COLLECTION, GeeAbstractCollection));
#line 281 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
		_tmp29_ = _tmp28_;
#line 281 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
		_tmp30_ = g_strdup_printf ("Checking interpretable for %d videos", _tmp29_);
#line 281 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
		_tmp31_ = _tmp30_;
#line 281 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
		media_monitor_mdbg (_tmp31_);
#line 281 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
		_g_free0 (_tmp31_);
#line 283 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
		video_notify_offline_thumbs_regenerated ();
#line 285 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
		_tmp32_ = self->priv->background_jobs;
#line 285 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
		_tmp33_ = check;
#line 285 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
		_tmp34_ = gee_abstract_collection_get_size (G_TYPE_CHECK_INSTANCE_CAST (_tmp33_, GEE_TYPE_ABSTRACT_COLLECTION, GeeAbstractCollection));
#line 285 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
		_tmp35_ = _tmp34_;
#line 285 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
		self->priv->background_jobs = _tmp32_ + _tmp35_;
#line 2026 "VideoMonitor.c"
		{
			GeeArrayList* _video_list = NULL;
			GeeArrayList* _tmp36_;
			GeeArrayList* _tmp37_;
			gint _video_size = 0;
			GeeArrayList* _tmp38_;
			gint _tmp39_;
			gint _tmp40_;
			gint _video_index = 0;
#line 286 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
			_tmp36_ = check;
#line 286 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
			_tmp37_ = _g_object_ref0 (_tmp36_);
#line 286 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
			_video_list = _tmp37_;
#line 286 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
			_tmp38_ = _video_list;
#line 286 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
			_tmp39_ = gee_abstract_collection_get_size (G_TYPE_CHECK_INSTANCE_CAST (_tmp38_, GEE_TYPE_ABSTRACT_COLLECTION, GeeAbstractCollection));
#line 286 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
			_tmp40_ = _tmp39_;
#line 286 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
			_video_size = _tmp40_;
#line 286 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
			_video_index = -1;
#line 286 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
			while (TRUE) {
#line 2054 "VideoMonitor.c"
				gint _tmp41_;
				gint _tmp42_;
				gint _tmp43_;
				Video* video = NULL;
				GeeArrayList* _tmp44_;
				gint _tmp45_;
				gpointer _tmp46_;
				Workers* _tmp47_;
				Video* _tmp48_;
				VideoMonitorVideoInterpretableCheckJob* _tmp49_;
				VideoMonitorVideoInterpretableCheckJob* _tmp50_;
#line 286 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
				_tmp41_ = _video_index;
#line 286 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
				_video_index = _tmp41_ + 1;
#line 286 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
				_tmp42_ = _video_index;
#line 286 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
				_tmp43_ = _video_size;
#line 286 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
				if (!(_tmp42_ < _tmp43_)) {
#line 286 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
					break;
#line 2078 "VideoMonitor.c"
				}
#line 286 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
				_tmp44_ = _video_list;
#line 286 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
				_tmp45_ = _video_index;
#line 286 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
				_tmp46_ = gee_abstract_list_get (G_TYPE_CHECK_INSTANCE_CAST (_tmp44_, GEE_TYPE_ABSTRACT_LIST, GeeAbstractList), _tmp45_);
#line 286 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
				video = (Video*) _tmp46_;
#line 287 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
				_tmp47_ = self->priv->workers;
#line 287 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
				_tmp48_ = video;
#line 287 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
				_tmp49_ = video_monitor_video_interpretable_check_job_new (_tmp48_, _video_monitor_on_interpretable_check_complete_completion_callback, self);
#line 287 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
				_tmp50_ = _tmp49_;
#line 287 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
				workers_enqueue (_tmp47_, G_TYPE_CHECK_INSTANCE_CAST (_tmp50_, TYPE_BACKGROUND_JOB, BackgroundJob));
#line 287 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
				_background_job_unref0 (_tmp50_);
#line 286 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
				_g_object_unref0 (video);
#line 2102 "VideoMonitor.c"
			}
#line 286 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
			_g_object_unref0 (_video_list);
#line 2106 "VideoMonitor.c"
		}
	}
#line 251 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	_g_object_unref0 (check);
#line 2111 "VideoMonitor.c"
}


static gpointer _background_job_ref0 (gpointer self) {
#line 292 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	return self ? background_job_ref (self) : NULL;
#line 2118 "VideoMonitor.c"
}


static void video_monitor_on_interpretable_check_complete (VideoMonitor* self, BackgroundJob* j) {
	VideoMonitorVideoInterpretableCheckJob* job = NULL;
	BackgroundJob* _tmp0_;
	VideoMonitorVideoInterpretableCheckJob* _tmp1_;
	VideoMonitorVideoInterpretableCheckJob* _tmp2_;
	VideoInterpretableResults* _tmp3_;
	guint64 _tmp4_;
	guint64 _tmp5_;
#line 291 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	g_return_if_fail (IS_VIDEO_MONITOR (self));
#line 291 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	g_return_if_fail (IS_BACKGROUND_JOB (j));
#line 292 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	_tmp0_ = j;
#line 292 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	_tmp1_ = _background_job_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, VIDEO_MONITOR_TYPE_VIDEO_INTERPRETABLE_CHECK_JOB, VideoMonitorVideoInterpretableCheckJob));
#line 292 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	job = _tmp1_;
#line 294 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	_tmp2_ = job;
#line 294 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	_tmp3_ = _tmp2_->results;
#line 294 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	video_interpretable_results_foreground_finish (_tmp3_);
#line 296 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	_tmp4_ = self->priv->background_jobs;
#line 296 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	self->priv->background_jobs = _tmp4_ - 1;
#line 297 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	_tmp5_ = self->priv->background_jobs;
#line 297 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	if (_tmp5_ <= ((guint64) 0)) {
#line 298 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
		video_notify_normal_thumbs_regenerated ();
#line 2156 "VideoMonitor.c"
	}
#line 291 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	_background_job_unref0 (job);
#line 2160 "VideoMonitor.c"
}


static VideoMonitorVideoInterpretableCheckJob* video_monitor_video_interpretable_check_job_construct (GType object_type, Video* video, CompletionCallback callback, void* callback_target) {
	VideoMonitorVideoInterpretableCheckJob* self = NULL;
	Video* _tmp0_;
	CompletionCallback _tmp1_;
	void* _tmp1__target;
	Video* _tmp2_;
	Video* _tmp3_;
#line 49 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	g_return_val_if_fail (IS_VIDEO (video), NULL);
#line 50 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	_tmp0_ = video;
#line 50 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	_tmp1_ = callback;
#line 50 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	_tmp1__target = callback_target;
#line 50 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	self = (VideoMonitorVideoInterpretableCheckJob*) background_job_construct (object_type, G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, G_TYPE_OBJECT, GObject), _tmp1_, _tmp1__target, NULL, NULL, NULL, NULL);
#line 51 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	_tmp2_ = video;
#line 51 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	_tmp3_ = _g_object_ref0 (_tmp2_);
#line 51 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	_g_object_unref0 (self->video);
#line 51 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	self->video = _tmp3_;
#line 49 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	return self;
#line 2191 "VideoMonitor.c"
}


static VideoMonitorVideoInterpretableCheckJob* video_monitor_video_interpretable_check_job_new (Video* video, CompletionCallback callback, void* callback_target) {
#line 49 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	return video_monitor_video_interpretable_check_job_construct (VIDEO_MONITOR_TYPE_VIDEO_INTERPRETABLE_CHECK_JOB, video, callback, callback_target);
#line 2198 "VideoMonitor.c"
}


static void video_monitor_video_interpretable_check_job_real_execute (BackgroundJob* base) {
	VideoMonitorVideoInterpretableCheckJob * self;
	Video* _tmp0_;
	VideoInterpretableResults* _tmp1_;
#line 54 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	self = G_TYPE_CHECK_INSTANCE_CAST (base, VIDEO_MONITOR_TYPE_VIDEO_INTERPRETABLE_CHECK_JOB, VideoMonitorVideoInterpretableCheckJob);
#line 55 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	_tmp0_ = self->video;
#line 55 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	_tmp1_ = video_check_is_interpretable (_tmp0_);
#line 55 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	_video_interpretable_results_unref0 (self->results);
#line 55 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	self->results = _tmp1_;
#line 2216 "VideoMonitor.c"
}


static void video_monitor_video_interpretable_check_job_class_init (VideoMonitorVideoInterpretableCheckJobClass * klass) {
#line 42 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	video_monitor_video_interpretable_check_job_parent_class = g_type_class_peek_parent (klass);
#line 42 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	((BackgroundJobClass *) klass)->finalize = video_monitor_video_interpretable_check_job_finalize;
#line 42 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	((BackgroundJobClass *) klass)->execute = (void (*) (BackgroundJob *)) video_monitor_video_interpretable_check_job_real_execute;
#line 2227 "VideoMonitor.c"
}


static void video_monitor_video_interpretable_check_job_instance_init (VideoMonitorVideoInterpretableCheckJob * self) {
#line 47 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	self->results = NULL;
#line 2234 "VideoMonitor.c"
}


static void video_monitor_video_interpretable_check_job_finalize (BackgroundJob * obj) {
	VideoMonitorVideoInterpretableCheckJob * self;
#line 42 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, VIDEO_MONITOR_TYPE_VIDEO_INTERPRETABLE_CHECK_JOB, VideoMonitorVideoInterpretableCheckJob);
#line 44 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	_g_object_unref0 (self->video);
#line 47 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	_video_interpretable_results_unref0 (self->results);
#line 42 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	BACKGROUND_JOB_CLASS (video_monitor_video_interpretable_check_job_parent_class)->finalize (obj);
#line 2248 "VideoMonitor.c"
}


static GType video_monitor_video_interpretable_check_job_get_type (void) {
	static volatile gsize video_monitor_video_interpretable_check_job_type_id__volatile = 0;
	if (g_once_init_enter (&video_monitor_video_interpretable_check_job_type_id__volatile)) {
		static const GTypeInfo g_define_type_info = { sizeof (VideoMonitorVideoInterpretableCheckJobClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) video_monitor_video_interpretable_check_job_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (VideoMonitorVideoInterpretableCheckJob), 0, (GInstanceInitFunc) video_monitor_video_interpretable_check_job_instance_init, NULL };
		GType video_monitor_video_interpretable_check_job_type_id;
		video_monitor_video_interpretable_check_job_type_id = g_type_register_static (TYPE_BACKGROUND_JOB, "VideoMonitorVideoInterpretableCheckJob", &g_define_type_info, 0);
		g_once_init_leave (&video_monitor_video_interpretable_check_job_type_id__volatile, video_monitor_video_interpretable_check_job_type_id);
	}
	return video_monitor_video_interpretable_check_job_type_id__volatile;
}


static void video_monitor_class_init (VideoMonitorClass * klass) {
#line 37 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	video_monitor_parent_class = g_type_class_peek_parent (klass);
#line 37 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	g_type_class_add_private (klass, sizeof (VideoMonitorPrivate));
#line 37 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	((MediaMonitorClass *) klass)->create_updates = (MonitorableUpdates* (*) (MediaMonitor *, Monitorable*)) video_monitor_real_create_updates;
#line 37 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	((MediaMonitorClass *) klass)->get_media_source_collection = (MediaSourceCollection* (*) (MediaMonitor *)) video_monitor_real_get_media_source_collection;
#line 37 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	((MediaMonitorClass *) klass)->is_file_represented = (gboolean (*) (MediaMonitor *, GFile*)) video_monitor_real_is_file_represented;
#line 37 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	((MediaMonitorClass *) klass)->notify_file_discovered = (MediaMonitorDiscoveredFile (*) (MediaMonitor *, GFile*, GFileInfo*, Monitorable* *)) video_monitor_real_notify_file_discovered;
#line 37 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	((MediaMonitorClass *) klass)->candidates_for_unknown_file = (GeeCollection* (*) (MediaMonitor *, GFile*, GFileInfo*, MediaMonitorDiscoveredFile*)) video_monitor_real_candidates_for_unknown_file;
#line 37 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	((MediaMonitorClass *) klass)->notify_file_created = (gboolean (*) (MediaMonitor *, GFile*, GFileInfo*)) video_monitor_real_notify_file_created;
#line 37 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	((MediaMonitorClass *) klass)->notify_file_moved = (gboolean (*) (MediaMonitor *, GFile*, GFile*, GFileInfo*)) video_monitor_real_notify_file_moved;
#line 37 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	((MediaMonitorClass *) klass)->notify_file_altered = (gboolean (*) (MediaMonitor *, GFile*)) video_monitor_real_notify_file_altered;
#line 37 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	((MediaMonitorClass *) klass)->notify_file_attributes_altered = (gboolean (*) (MediaMonitor *, GFile*)) video_monitor_real_notify_file_attributes_altered;
#line 37 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	((MediaMonitorClass *) klass)->notify_file_alteration_completed = (gboolean (*) (MediaMonitor *, GFile*, GFileInfo*)) video_monitor_real_notify_file_alteration_completed;
#line 37 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	((MediaMonitorClass *) klass)->notify_file_deleted = (gboolean (*) (MediaMonitor *, GFile*)) video_monitor_real_notify_file_deleted;
#line 37 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	((MediaMonitorClass *) klass)->process_updates = (void (*) (MediaMonitor *, GeeCollection*, TransactionController*, gint*, GError**)) video_monitor_real_process_updates;
#line 37 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	G_OBJECT_CLASS (klass)->finalize = video_monitor_finalize;
#line 2295 "VideoMonitor.c"
}


static void video_monitor_instance_init (VideoMonitor * self) {
	Workers* _tmp0_;
#line 37 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	self->priv = VIDEO_MONITOR_GET_PRIVATE (self);
#line 62 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	_tmp0_ = workers_new ((guint) 1, FALSE);
#line 62 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	self->priv->workers = _tmp0_;
#line 63 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	self->priv->background_jobs = (guint64) 0;
#line 2309 "VideoMonitor.c"
}


static void video_monitor_finalize (GObject * obj) {
	VideoMonitor * self;
#line 37 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_VIDEO_MONITOR, VideoMonitor);
#line 62 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	_workers_unref0 (self->priv->workers);
#line 37 "/home/jens/Source/shotwell/src/VideoMonitor.vala"
	G_OBJECT_CLASS (video_monitor_parent_class)->finalize (obj);
#line 2321 "VideoMonitor.c"
}


GType video_monitor_get_type (void) {
	static volatile gsize video_monitor_type_id__volatile = 0;
	if (g_once_init_enter (&video_monitor_type_id__volatile)) {
		static const GTypeInfo g_define_type_info = { sizeof (VideoMonitorClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) video_monitor_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (VideoMonitor), 0, (GInstanceInitFunc) video_monitor_instance_init, NULL };
		GType video_monitor_type_id;
		video_monitor_type_id = g_type_register_static (TYPE_MEDIA_MONITOR, "VideoMonitor", &g_define_type_info, 0);
		g_once_init_leave (&video_monitor_type_id__volatile, video_monitor_type_id);
	}
	return video_monitor_type_id__volatile;
}