/* autosave-manager.c generated by valac 0.20.1, the Vala compiler
 * generated from autosave-manager.vala, do not modify */

/*
 * Copyright (C) 2011 Timo Kluck
 * Author: Timo Kluck <tkluck@infty.nl>
 *
 * This program is free software: you can redistribute it and/or modify it under
 * the terms of the GNU General Public License as published by the Free Software
 * Foundation, either version 3 of the License, or (at your option) any later
 * version. See http://www.gnu.org/copyleft/gpl.html the full text of the
 * license.
 */
/*
 * We store autosaves in a database named
 *    ~/.cache/simple-scan/autosaves/autosaves.db
 * It contains a single table of pages, each containing the process id (pid) of
 * the simple-scan instance that saved it, and a hash of the Book and Page
 * objects corresponding to it. The pixels are saved as a BLOB.
 * Additionally, the autosaves directory contains a number of tiff files that
 * the user can use for manual recovery.
 *
 * At startup, we check whether autosaves.db contains any records
 * with a pid that does not match a current pid for simple-scan. If so, we take
 * ownership by an UPDATE statement changing to our own pid. Then, we
 * recover the book. We're trying our best to avoid the possible race
 * condition if several instances of simple-scan are started simultaneously.
 *
 * At application exit, we delete the records corresponding to our own pid.
 *
 * Important notes:
 *  - We enforce that there is only one AutosaveManager instance in a given
 *    process by using a create function.
 *  - It should be possible to change the book object at runtime, although this
 *    is not used in the current implementation so it has not been tested.
 */

#include <glib.h>
#include <glib-object.h>
#include <sqlite3.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <gio/gio.h>
#include <float.h>
#include <math.h>
#include <gobject/gvaluecollector.h>


#define TYPE_AUTOSAVE_MANAGER (autosave_manager_get_type ())
#define AUTOSAVE_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_AUTOSAVE_MANAGER, AutosaveManager))
#define AUTOSAVE_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_AUTOSAVE_MANAGER, AutosaveManagerClass))
#define IS_AUTOSAVE_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_AUTOSAVE_MANAGER))
#define IS_AUTOSAVE_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_AUTOSAVE_MANAGER))
#define AUTOSAVE_MANAGER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_AUTOSAVE_MANAGER, AutosaveManagerClass))

typedef struct _AutosaveManager AutosaveManager;
typedef struct _AutosaveManagerClass AutosaveManagerClass;
typedef struct _AutosaveManagerPrivate AutosaveManagerPrivate;

#define TYPE_BOOK (book_get_type ())
#define BOOK(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_BOOK, Book))
#define BOOK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_BOOK, BookClass))
#define IS_BOOK(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_BOOK))
#define IS_BOOK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_BOOK))
#define BOOK_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_BOOK, BookClass))

typedef struct _Book Book;
typedef struct _BookClass BookClass;

#define TYPE_PAGE (page_get_type ())
#define PAGE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_PAGE, Page))
#define PAGE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_PAGE, PageClass))
#define IS_PAGE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_PAGE))
#define IS_PAGE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_PAGE))
#define PAGE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_PAGE, PageClass))

typedef struct _Page Page;
typedef struct _PageClass PageClass;
#define _sqlite3_close0(var) ((var == NULL) ? NULL : (var = (sqlite3_close (var), NULL)))
#define _book_unref0(var) ((var == NULL) ? NULL : (var = (book_unref (var), NULL)))
#define _g_hash_table_unref0(var) ((var == NULL) ? NULL : (var = (g_hash_table_unref (var), NULL)))
#define _autosave_manager_unref0(var) ((var == NULL) ? NULL : (var = (autosave_manager_unref (var), NULL)))
#define _g_free0(var) (var = (g_free (var), NULL))
#define _sqlite3_finalize0(var) ((var == NULL) ? NULL : (var = (sqlite3_finalize (var), NULL)))
#define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL)))
#define _page_unref0(var) ((var == NULL) ? NULL : (var = (page_unref (var), NULL)))
#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))

#define TYPE_SCAN_DIRECTION (scan_direction_get_type ())

#define TYPE_SCAN_PAGE_INFO (scan_page_info_get_type ())
#define SCAN_PAGE_INFO(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_SCAN_PAGE_INFO, ScanPageInfo))
#define SCAN_PAGE_INFO_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_SCAN_PAGE_INFO, ScanPageInfoClass))
#define IS_SCAN_PAGE_INFO(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_SCAN_PAGE_INFO))
#define IS_SCAN_PAGE_INFO_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_SCAN_PAGE_INFO))
#define SCAN_PAGE_INFO_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_SCAN_PAGE_INFO, ScanPageInfoClass))

typedef struct _ScanPageInfo ScanPageInfo;
typedef struct _ScanPageInfoClass ScanPageInfoClass;
typedef struct _ScanPageInfoPrivate ScanPageInfoPrivate;
#define _scan_page_info_unref0(var) ((var == NULL) ? NULL : (var = (scan_page_info_unref (var), NULL)))
typedef struct _ParamSpecAutosaveManager ParamSpecAutosaveManager;

struct _AutosaveManager {
	GTypeInstance parent_instance;
	volatile int ref_count;
	AutosaveManagerPrivate * priv;
};

struct _AutosaveManagerClass {
	GTypeClass parent_class;
	void (*finalize) (AutosaveManager *self);
};

struct _AutosaveManagerPrivate {
	sqlite3* database_connection;
	Book* _book;
	guint update_timeout;
	GHashTable* dirty_pages;
	gint cur_book_revision;
};

typedef enum  {
	SCAN_DIRECTION_TOP_TO_BOTTOM,
	SCAN_DIRECTION_LEFT_TO_RIGHT,
	SCAN_DIRECTION_BOTTOM_TO_TOP,
	SCAN_DIRECTION_RIGHT_TO_LEFT
} ScanDirection;

struct _ScanPageInfo {
	GTypeInstance parent_instance;
	volatile int ref_count;
	ScanPageInfoPrivate * priv;
	gint width;
	gint height;
	gint depth;
	gint n_channels;
	gdouble dpi;
	gchar* device;
};

struct _ScanPageInfoClass {
	GTypeClass parent_class;
	void (*finalize) (ScanPageInfo *self);
};

struct _ParamSpecAutosaveManager {
	GParamSpec parent_instance;
};


static gpointer autosave_manager_parent_class = NULL;
static gchar* autosave_manager_AUTOSAVE_DIR;
static gchar* autosave_manager_AUTOSAVE_DIR = NULL;
static gchar* autosave_manager_AUTOSAVE_NAME;
static gchar* autosave_manager_AUTOSAVE_NAME = NULL;
static gchar* autosave_manager_AUTOSAVE_EXT;
static gchar* autosave_manager_AUTOSAVE_EXT = NULL;
static gchar* autosave_manager_AUTOSAVE_FILENAME;
static gchar* autosave_manager_AUTOSAVE_FILENAME = NULL;
static gchar* autosave_manager_PID;
static gchar* autosave_manager_PID = NULL;
static gint autosave_manager_number_of_instances;
static gint autosave_manager_number_of_instances = 0;

gpointer autosave_manager_ref (gpointer instance);
void autosave_manager_unref (gpointer instance);
GParamSpec* param_spec_autosave_manager (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
void value_set_autosave_manager (GValue* value, gpointer v_object);
void value_take_autosave_manager (GValue* value, gpointer v_object);
gpointer value_get_autosave_manager (const GValue* value);
GType autosave_manager_get_type (void) G_GNUC_CONST;
gpointer book_ref (gpointer instance);
void book_unref (gpointer instance);
GParamSpec* param_spec_book (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
void value_set_book (GValue* value, gpointer v_object);
void value_take_book (GValue* value, gpointer v_object);
gpointer value_get_book (const GValue* value);
GType book_get_type (void) G_GNUC_CONST;
gpointer page_ref (gpointer instance);
void page_unref (gpointer instance);
GParamSpec* param_spec_page (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
void value_set_page (GValue* value, gpointer v_object);
void value_take_page (GValue* value, gpointer v_object);
gpointer value_get_page (const GValue* value);
GType page_get_type (void) G_GNUC_CONST;
#define AUTOSAVE_MANAGER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_AUTOSAVE_MANAGER, AutosaveManagerPrivate))
enum  {
	AUTOSAVE_MANAGER_DUMMY_PROPERTY
};
AutosaveManager* autosave_manager_create (Book** book);
static AutosaveManager* autosave_manager_new (void);
static AutosaveManager* autosave_manager_construct (GType object_type);
static sqlite3* autosave_manager_open_database_connection (GError** error);
static void autosave_manager_recover_book (AutosaveManager* self, Book** book);
void autosave_manager_set_book (AutosaveManager* self, Book* value);
guint book_get_n_pages (Book* self);
Page* book_get_page (Book* self, gint page_number);
static void autosave_manager_on_page_added (AutosaveManager* self, Page* page);
static void _page_unref0_ (gpointer var);
void autosave_manager_cleanup (AutosaveManager* self);
static void autosave_manager_insert_page (AutosaveManager* self, Page* page);
void autosave_manager_on_page_changed (AutosaveManager* self, Page* page);
static void _autosave_manager_on_page_changed_page_size_changed (Page* _sender, gpointer self);
static void _autosave_manager_on_page_changed_page_scan_direction_changed (Page* _sender, gpointer self);
static void _autosave_manager_on_page_changed_page_crop_changed (Page* _sender, gpointer self);
static void _autosave_manager_on_page_changed_page_scan_finished (Page* _sender, gpointer self);
void autosave_manager_on_page_removed (AutosaveManager* self, Page* page);
static void _autosave_manager_on_page_changed_page_pixels_changed (Page* _sender, gpointer self);
Book* autosave_manager_get_book (AutosaveManager* self);
void autosave_manager_on_reordered (AutosaveManager* self);
static void autosave_manager_update_page (AutosaveManager* self, Page* page);
void autosave_manager_on_needs_saving_changed (AutosaveManager* self, Book* book);
void autosave_manager_on_cleared (AutosaveManager* self);
static gboolean __lambda2_ (AutosaveManager* self);
static void autosave_manager_real_update_page (AutosaveManager* self, Page* page);
static gboolean ___lambda2__gsource_func (gpointer self);
void page_get_crop (Page* self, gint* x, gint* y, gint* width, gint* height);
guint book_get_page_index (Book* self, Page* page);
gint page_get_dpi (Page* self);
gint page_get_width (Page* self);
gint page_get_height (Page* self);
gint page_get_depth (Page* self);
gint page_get_n_channels (Page* self);
gint page_get_rowstride (Page* self);
GType scan_direction_get_type (void) G_GNUC_CONST;
ScanDirection page_get_scan_direction (Page* self);
gchar* page_get_color_profile (Page* self);
guchar* page_get_pixels (Page* self, int* result_length1);
void book_clear (Book* self);
Page* book_append_page (Book* self, gint width, gint height, gint dpi, ScanDirection scan_direction);
ScanPageInfo* scan_page_info_new (void);
ScanPageInfo* scan_page_info_construct (GType object_type);
gpointer scan_page_info_ref (gpointer instance);
void scan_page_info_unref (gpointer instance);
GParamSpec* param_spec_scan_page_info (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
void value_set_scan_page_info (GValue* value, gpointer v_object);
void value_take_scan_page_info (GValue* value, gpointer v_object);
gpointer value_get_scan_page_info (const GValue* value);
GType scan_page_info_get_type (void) G_GNUC_CONST;
void page_set_page_info (Page* self, ScanPageInfo* info);
void page_set_color_profile (Page* self, const gchar* color_profile);
void page_set_custom_crop (Page* self, gint width, gint height);
void page_move_crop (Page* self, gint x, gint y);
void page_set_pixels (Page* self, guchar* new_pixels, int new_pixels_length1);
static void _autosave_manager_on_page_added_book_page_added (Book* _sender, Page* page, gpointer self);
static void _autosave_manager_on_page_removed_book_page_removed (Book* _sender, Page* page, gpointer self);
static void _autosave_manager_on_reordered_book_reordered (Book* _sender, gpointer self);
static void _autosave_manager_on_cleared_book_cleared (Book* _sender, gpointer self);
static void autosave_manager_finalize (AutosaveManager* obj);


static gchar* string_strip (const gchar* self) {
	gchar* result = NULL;
	gchar* _tmp0_ = NULL;
	gchar* _result_;
	const gchar* _tmp1_;
#line 1085 "/usr/share/vala-0.20/vapi/glib-2.0.vapi"
	g_return_val_if_fail (self != NULL, NULL);
#line 1086 "/usr/share/vala-0.20/vapi/glib-2.0.vapi"
	_tmp0_ = g_strdup (self);
#line 1086 "/usr/share/vala-0.20/vapi/glib-2.0.vapi"
	_result_ = _tmp0_;
#line 1087 "/usr/share/vala-0.20/vapi/glib-2.0.vapi"
	_tmp1_ = _result_;
#line 1087 "/usr/share/vala-0.20/vapi/glib-2.0.vapi"
	g_strstrip (_tmp1_);
#line 1088 "/usr/share/vala-0.20/vapi/glib-2.0.vapi"
	result = _result_;
#line 1088 "/usr/share/vala-0.20/vapi/glib-2.0.vapi"
	return result;
#line 274 "autosave-manager.c"
}


static const gchar* string_to_string (const gchar* self) {
	const gchar* result = NULL;
#line 1274 "/usr/share/vala-0.20/vapi/glib-2.0.vapi"
	g_return_val_if_fail (self != NULL, NULL);
#line 1275 "/usr/share/vala-0.20/vapi/glib-2.0.vapi"
	result = self;
#line 1275 "/usr/share/vala-0.20/vapi/glib-2.0.vapi"
	return result;
#line 286 "autosave-manager.c"
}


AutosaveManager* autosave_manager_create (Book** book) {
	AutosaveManager* result = NULL;
	gint _tmp0_;
	AutosaveManager* _tmp1_;
	AutosaveManager* man;
	gint _tmp2_;
	gboolean any_pages_recovered;
	AutosaveManager* _tmp51_;
	Book* _tmp52_;
	gboolean _tmp53_;
	GError * _inner_error_ = NULL;
#line 85 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	g_return_val_if_fail (*book != NULL, NULL);
#line 92 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp0_ = autosave_manager_number_of_instances;
#line 92 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	if (_tmp0_ > 0) {
#line 93 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		g_assert_not_reached ();
#line 309 "autosave-manager.c"
	}
#line 95 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp1_ = autosave_manager_new ();
#line 95 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	man = _tmp1_;
#line 96 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp2_ = autosave_manager_number_of_instances;
#line 96 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	autosave_manager_number_of_instances = _tmp2_ + 1;
#line 319 "autosave-manager.c"
	{
		sqlite3* _tmp3_ = NULL;
		sqlite3* _tmp4_;
		AutosaveManager* _tmp5_;
#line 100 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp3_ = autosave_manager_open_database_connection (&_inner_error_);
#line 100 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp4_ = _tmp3_;
#line 100 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		if (_inner_error_ != NULL) {
#line 330 "autosave-manager.c"
			goto __catch23_g_error;
		}
#line 100 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp5_ = man;
#line 100 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_sqlite3_close0 (_tmp5_->priv->database_connection);
#line 100 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp5_->priv->database_connection = _tmp4_;
#line 339 "autosave-manager.c"
	}
	goto __finally23;
	__catch23_g_error:
	{
#line 98 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		g_clear_error (&_inner_error_);
#line 98 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_inner_error_ = NULL;
#line 104 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		g_warning ("autosave-manager.vala:104: Could not connect to the autosave database;" \
" no autosaves will be kept.");
#line 105 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		result = NULL;
#line 105 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_autosave_manager_unref0 (man);
#line 105 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		return result;
#line 356 "autosave-manager.c"
	}
	__finally23:
#line 98 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	if (_inner_error_ != NULL) {
#line 98 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_autosave_manager_unref0 (man);
#line 98 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
#line 98 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		g_clear_error (&_inner_error_);
#line 98 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		return NULL;
#line 369 "autosave-manager.c"
	}
#line 108 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	any_pages_recovered = FALSE;
#line 373 "autosave-manager.c"
	{
		gchar* current_pids = NULL;
		gchar* _tmp6_ = NULL;
		const gchar* _tmp7_;
		gchar* _tmp8_ = NULL;
		sqlite3_stmt* stmt = NULL;
		const gchar* _tmp9_;
		const gchar* _tmp10_ = NULL;
		gchar* _tmp11_ = NULL;
		gchar* query;
		AutosaveManager* _tmp12_;
		sqlite3* _tmp13_;
		const gchar* _tmp14_;
		sqlite3_stmt* _tmp15_ = NULL;
		gint _tmp16_ = 0;
		gint _result_;
		gint _tmp17_;
#line 113 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		g_spawn_command_line_sync ("pidof simple-scan | sed \"s/ /,/g\"", &_tmp6_, NULL, NULL, &_inner_error_);
#line 113 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_g_free0 (current_pids);
#line 113 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		current_pids = _tmp6_;
#line 113 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		if (_inner_error_ != NULL) {
#line 113 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
			_g_free0 (current_pids);
#line 113 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
			if (_inner_error_->domain == G_SPAWN_ERROR) {
#line 403 "autosave-manager.c"
				goto __catch24_g_spawn_error;
			}
#line 113 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
			_g_free0 (current_pids);
#line 113 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
			_autosave_manager_unref0 (man);
#line 113 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
			g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
#line 113 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
			g_clear_error (&_inner_error_);
#line 113 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
			return NULL;
#line 416 "autosave-manager.c"
		}
#line 114 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp7_ = current_pids;
#line 114 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp8_ = string_strip (_tmp7_);
#line 114 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_g_free0 (current_pids);
#line 114 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		current_pids = _tmp8_;
#line 116 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp9_ = current_pids;
#line 116 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp10_ = string_to_string (_tmp9_);
#line 116 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp11_ = g_strconcat ("\n" \
"                   SELECT process_id, book_hash, book_revision FROM pa" \
"ges\n" \
"                   WHERE NOT process_id IN (", _tmp10_, ")\n                   LIMIT 1\n                ", NULL);
#line 116 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		query = _tmp11_;
#line 122 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp12_ = man;
#line 122 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp13_ = _tmp12_->priv->database_connection;
#line 122 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp14_ = query;
#line 122 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp16_ = sqlite3_prepare_v2 (_tmp13_, _tmp14_, -1, &_tmp15_, NULL);
#line 122 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_sqlite3_finalize0 (stmt);
#line 122 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		stmt = _tmp15_;
#line 122 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_result_ = _tmp16_;
#line 123 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp17_ = _result_;
#line 123 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		if (_tmp17_ == SQLITE_OK) {
#line 125 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
			while (TRUE) {
#line 454 "autosave-manager.c"
				sqlite3_stmt* _tmp18_;
				gint _tmp19_ = 0;
				sqlite3_stmt* _tmp20_;
				gint _tmp21_ = 0;
				gint unowned_pid;
				sqlite3_stmt* _tmp22_;
				gint _tmp23_ = 0;
				gint book_hash;
				sqlite3_stmt* _tmp24_;
				gint _tmp25_ = 0;
				gint book_revision;
				const gchar* _tmp26_;
				const gchar* _tmp27_ = NULL;
				gchar* _tmp28_ = NULL;
				sqlite3_stmt* stmt2 = NULL;
				AutosaveManager* _tmp29_;
				sqlite3* _tmp30_;
				const gchar* _tmp31_;
				sqlite3_stmt* _tmp32_ = NULL;
				gint _tmp33_ = 0;
				gint _tmp34_;
				sqlite3_stmt* _tmp39_;
				gint _tmp40_;
				sqlite3_stmt* _tmp41_;
				gint _tmp42_;
				sqlite3_stmt* _tmp43_;
				gint _tmp44_;
				sqlite3_stmt* _tmp45_;
				gint _tmp46_ = 0;
				gint _tmp47_;
#line 125 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				_tmp18_ = stmt;
#line 125 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				_tmp19_ = sqlite3_step (_tmp18_);
#line 125 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				if (!(_tmp19_ == SQLITE_ROW)) {
#line 125 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
					break;
#line 493 "autosave-manager.c"
				}
#line 127 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				g_debug ("autosave-manager.vala:127: Found at least one autosave page, taking ow" \
"nership");
#line 128 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				_tmp20_ = stmt;
#line 128 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				_tmp21_ = sqlite3_column_int (_tmp20_, 0);
#line 128 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				unowned_pid = _tmp21_;
#line 129 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				_tmp22_ = stmt;
#line 129 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				_tmp23_ = sqlite3_column_int (_tmp22_, 1);
#line 129 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				book_hash = _tmp23_;
#line 130 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				_tmp24_ = stmt;
#line 130 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				_tmp25_ = sqlite3_column_int (_tmp24_, 2);
#line 130 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				book_revision = _tmp25_;
#line 137 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				_tmp26_ = autosave_manager_PID;
#line 137 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				_tmp27_ = string_to_string (_tmp26_);
#line 137 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				_tmp28_ = g_strconcat ("\n" \
"                        UPDATE pages\n" \
"                           SET process_id = ", _tmp27_, "\n" \
"                         WHERE process_id = ?2\n" \
"                           AND book_hash = ?3\n" \
"                           AND book_revision = ?4", NULL);
#line 137 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				_g_free0 (query);
#line 137 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				query = _tmp28_;
#line 144 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				_tmp29_ = man;
#line 144 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				_tmp30_ = _tmp29_->priv->database_connection;
#line 144 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				_tmp31_ = query;
#line 144 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				_tmp33_ = sqlite3_prepare_v2 (_tmp30_, _tmp31_, -1, &_tmp32_, NULL);
#line 144 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				_sqlite3_finalize0 (stmt2);
#line 144 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				stmt2 = _tmp32_;
#line 144 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				_result_ = _tmp33_;
#line 145 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				_tmp34_ = _result_;
#line 145 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				if (_tmp34_ != SQLITE_OK) {
#line 543 "autosave-manager.c"
					const gchar* _tmp35_;
					const gchar* _tmp36_ = NULL;
					gchar* _tmp37_ = NULL;
					gchar* _tmp38_;
#line 146 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
					_tmp35_ = query;
#line 146 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
					_tmp36_ = string_to_string (_tmp35_);
#line 146 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
					_tmp37_ = g_strconcat ("Error preparing statement: ", _tmp36_, NULL);
#line 146 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
					_tmp38_ = _tmp37_;
#line 146 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
					g_warning ("autosave-manager.vala:146: %s", _tmp38_);
#line 146 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
					_g_free0 (_tmp38_);
#line 560 "autosave-manager.c"
				}
#line 148 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				_tmp39_ = stmt2;
#line 148 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				_tmp40_ = unowned_pid;
#line 148 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				sqlite3_bind_int64 (_tmp39_, 2, (gint64) _tmp40_);
#line 149 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				_tmp41_ = stmt2;
#line 149 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				_tmp42_ = book_hash;
#line 149 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				sqlite3_bind_int64 (_tmp41_, 3, (gint64) _tmp42_);
#line 150 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				_tmp43_ = stmt2;
#line 150 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				_tmp44_ = book_revision;
#line 150 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				sqlite3_bind_int64 (_tmp43_, 4, (gint64) _tmp44_);
#line 151 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				_tmp45_ = stmt2;
#line 151 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				_tmp46_ = sqlite3_step (_tmp45_);
#line 151 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				_result_ = _tmp46_;
#line 152 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				_tmp47_ = _result_;
#line 152 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				if (_tmp47_ == SQLITE_DONE) {
#line 590 "autosave-manager.c"
					AutosaveManager* _tmp48_;
#line 154 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
					any_pages_recovered = TRUE;
#line 155 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
					_tmp48_ = man;
#line 155 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
					autosave_manager_recover_book (_tmp48_, book);
#line 598 "autosave-manager.c"
				} else {
					gint _tmp49_;
#line 158 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
					_tmp49_ = _result_;
#line 158 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
					g_warning ("autosave-manager.vala:158: Error %d while executing query", _tmp49_);
#line 605 "autosave-manager.c"
				}
#line 125 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				_sqlite3_finalize0 (stmt2);
#line 609 "autosave-manager.c"
			}
		} else {
			gint _tmp50_;
#line 162 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
			_tmp50_ = _result_;
#line 162 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
			g_warning ("autosave-manager.vala:162: Error %d while preparing statement", _tmp50_);
#line 617 "autosave-manager.c"
		}
#line 109 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_g_free0 (query);
#line 109 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_sqlite3_finalize0 (stmt);
#line 109 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_g_free0 (current_pids);
#line 625 "autosave-manager.c"
	}
	goto __finally24;
	__catch24_g_spawn_error:
	{
		GError* e = NULL;
#line 109 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		e = _inner_error_;
#line 109 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_inner_error_ = NULL;
#line 166 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		g_warning ("autosave-manager.vala:166: Could not obtain current process ids; not r" \
"estoring any autosaves");
#line 109 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_g_error_free0 (e);
#line 639 "autosave-manager.c"
	}
	__finally24:
#line 109 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	if (_inner_error_ != NULL) {
#line 109 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_autosave_manager_unref0 (man);
#line 109 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
#line 109 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		g_clear_error (&_inner_error_);
#line 109 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		return NULL;
#line 652 "autosave-manager.c"
	}
#line 169 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp51_ = man;
#line 169 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp52_ = *book;
#line 169 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	autosave_manager_set_book (_tmp51_, _tmp52_);
#line 170 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp53_ = any_pages_recovered;
#line 170 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	if (!_tmp53_) {
#line 664 "autosave-manager.c"
		{
			gint i;
#line 172 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
			i = 0;
#line 669 "autosave-manager.c"
			{
				gboolean _tmp54_;
#line 172 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				_tmp54_ = TRUE;
#line 172 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				while (TRUE) {
#line 676 "autosave-manager.c"
					gboolean _tmp55_;
					gint _tmp57_;
					Book* _tmp58_;
					guint _tmp59_ = 0U;
					Book* _tmp60_;
					gint _tmp61_;
					Page* _tmp62_ = NULL;
					Page* page;
					AutosaveManager* _tmp63_;
					Page* _tmp64_;
#line 172 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
					_tmp55_ = _tmp54_;
#line 172 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
					if (!_tmp55_) {
#line 691 "autosave-manager.c"
						gint _tmp56_;
#line 172 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
						_tmp56_ = i;
#line 172 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
						i = _tmp56_ + 1;
#line 697 "autosave-manager.c"
					}
#line 172 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
					_tmp54_ = FALSE;
#line 172 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
					_tmp57_ = i;
#line 172 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
					_tmp58_ = *book;
#line 172 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
					_tmp59_ = book_get_n_pages (_tmp58_);
#line 172 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
					if (!(((guint) _tmp57_) < _tmp59_)) {
#line 172 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
						break;
#line 711 "autosave-manager.c"
					}
#line 174 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
					_tmp60_ = *book;
#line 174 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
					_tmp61_ = i;
#line 174 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
					_tmp62_ = book_get_page (_tmp60_, _tmp61_);
#line 174 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
					page = _tmp62_;
#line 175 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
					_tmp63_ = man;
#line 175 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
					_tmp64_ = page;
#line 175 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
					autosave_manager_on_page_added (_tmp63_, _tmp64_);
#line 172 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
					_page_unref0 (page);
#line 729 "autosave-manager.c"
				}
			}
		}
	}
#line 179 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	result = man;
#line 179 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	return result;
#line 738 "autosave-manager.c"
}


static void _page_unref0_ (gpointer var) {
#line 184 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	(var == NULL) ? NULL : (var = (page_unref (var), NULL));
#line 745 "autosave-manager.c"
}


static AutosaveManager* autosave_manager_construct (GType object_type) {
	AutosaveManager* self = NULL;
	GHashFunc _tmp0_;
	GEqualFunc _tmp1_;
	GHashTable* _tmp2_;
#line 182 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	self = (AutosaveManager*) g_type_create_instance (object_type);
#line 184 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp0_ = g_direct_hash;
#line 184 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp1_ = g_direct_equal;
#line 184 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp2_ = g_hash_table_new_full (_tmp0_, _tmp1_, _page_unref0_, NULL);
#line 184 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_g_hash_table_unref0 (self->priv->dirty_pages);
#line 184 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	self->priv->dirty_pages = _tmp2_;
#line 182 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	return self;
#line 768 "autosave-manager.c"
}


static AutosaveManager* autosave_manager_new (void) {
#line 182 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	return autosave_manager_construct (TYPE_AUTOSAVE_MANAGER);
#line 775 "autosave-manager.c"
}


static gint _sqlite3_exec (sqlite3* self, const gchar* sql, sqlite3_callback callback, void* callback_target, gchar** errmsg) {
	gchar* _vala_errmsg = NULL;
	gint result = 0;
	const gchar* sqlite_errmsg = NULL;
	const gchar* _tmp0_;
	sqlite3_callback _tmp1_;
	void* _tmp1__target;
	const gchar* _tmp2_ = NULL;
	gint _tmp3_ = 0;
	gint ec;
	const gchar* _tmp6_;
#line 34 "/usr/share/vala-0.20/vapi/sqlite3.vapi"
	g_return_val_if_fail (self != NULL, 0);
#line 34 "/usr/share/vala-0.20/vapi/sqlite3.vapi"
	g_return_val_if_fail (sql != NULL, 0);
#line 36 "/usr/share/vala-0.20/vapi/sqlite3.vapi"
	_tmp0_ = sql;
#line 36 "/usr/share/vala-0.20/vapi/sqlite3.vapi"
	_tmp1_ = callback;
#line 36 "/usr/share/vala-0.20/vapi/sqlite3.vapi"
	_tmp1__target = callback_target;
#line 36 "/usr/share/vala-0.20/vapi/sqlite3.vapi"
	_tmp3_ = sqlite3_exec (self, _tmp0_, _tmp1_, _tmp1__target, (char**) (&_tmp2_));
#line 36 "/usr/share/vala-0.20/vapi/sqlite3.vapi"
	sqlite_errmsg = _tmp2_;
#line 36 "/usr/share/vala-0.20/vapi/sqlite3.vapi"
	ec = _tmp3_;
#line 37 "/usr/share/vala-0.20/vapi/sqlite3.vapi"
	if ((&_vala_errmsg) != NULL) {
#line 808 "autosave-manager.c"
		const gchar* _tmp4_;
		gchar* _tmp5_;
#line 38 "/usr/share/vala-0.20/vapi/sqlite3.vapi"
		_tmp4_ = sqlite_errmsg;
#line 38 "/usr/share/vala-0.20/vapi/sqlite3.vapi"
		_tmp5_ = g_strdup (_tmp4_);
#line 38 "/usr/share/vala-0.20/vapi/sqlite3.vapi"
		_g_free0 (_vala_errmsg);
#line 38 "/usr/share/vala-0.20/vapi/sqlite3.vapi"
		_vala_errmsg = _tmp5_;
#line 819 "autosave-manager.c"
	}
#line 40 "/usr/share/vala-0.20/vapi/sqlite3.vapi"
	_tmp6_ = sqlite_errmsg;
#line 40 "/usr/share/vala-0.20/vapi/sqlite3.vapi"
	sqlite3_free ((void*) _tmp6_);
#line 41 "/usr/share/vala-0.20/vapi/sqlite3.vapi"
	result = ec;
#line 41 "/usr/share/vala-0.20/vapi/sqlite3.vapi"
	if (errmsg) {
#line 41 "/usr/share/vala-0.20/vapi/sqlite3.vapi"
		*errmsg = _vala_errmsg;
#line 831 "autosave-manager.c"
	} else {
#line 41 "/usr/share/vala-0.20/vapi/sqlite3.vapi"
		_g_free0 (_vala_errmsg);
#line 835 "autosave-manager.c"
	}
#line 41 "/usr/share/vala-0.20/vapi/sqlite3.vapi"
	return result;
#line 839 "autosave-manager.c"
}


void autosave_manager_cleanup (AutosaveManager* self) {
	guint _tmp0_;
	sqlite3* _tmp2_;
	const gchar* _tmp3_;
	const gchar* _tmp4_ = NULL;
	gchar* _tmp5_ = NULL;
	gchar* _tmp6_;
	gint _tmp7_ = 0;
#line 187 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	g_return_if_fail (self != NULL);
#line 189 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	g_debug ("autosave-manager.vala:189: Clean exit; deleting autosave records");
#line 191 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp0_ = self->priv->update_timeout;
#line 191 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	if (_tmp0_ > ((guint) 0)) {
#line 859 "autosave-manager.c"
		guint _tmp1_;
#line 192 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp1_ = self->priv->update_timeout;
#line 192 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		g_source_remove (_tmp1_);
#line 865 "autosave-manager.c"
	}
#line 193 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	self->priv->update_timeout = (guint) 0;
#line 195 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp2_ = self->priv->database_connection;
#line 195 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp3_ = autosave_manager_PID;
#line 195 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp4_ = string_to_string (_tmp3_);
#line 195 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp5_ = g_strconcat ("\n            DELETE FROM pages\n                WHERE process_id = ", _tmp4_, "\n        ", NULL);
#line 195 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp6_ = _tmp5_;
#line 195 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp7_ = _sqlite3_exec (_tmp2_, _tmp6_, NULL, NULL, NULL);
#line 195 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	g_warn_if_fail (_tmp7_ == SQLITE_OK);
#line 195 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_g_free0 (_tmp6_);
#line 885 "autosave-manager.c"
}


static sqlite3* autosave_manager_open_database_connection (GError** error) {
	sqlite3* result = NULL;
	const gchar* _tmp0_;
	GFile* _tmp1_ = NULL;
	GFile* autosaves_dir;
	sqlite3* connection = NULL;
	const gchar* _tmp3_;
	sqlite3* _tmp4_ = NULL;
	gint _tmp5_ = 0;
	gchar* _tmp7_;
	gchar* query;
	sqlite3* _tmp8_;
	const gchar* _tmp9_;
	gint _tmp10_ = 0;
	gint _result_;
	gint _tmp11_;
	GError * _inner_error_ = NULL;
#line 203 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp0_ = autosave_manager_AUTOSAVE_DIR;
#line 203 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp1_ = g_file_new_for_path (_tmp0_);
#line 203 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	autosaves_dir = _tmp1_;
#line 912 "autosave-manager.c"
	{
		GFile* _tmp2_;
#line 206 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp2_ = autosaves_dir;
#line 206 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		g_file_make_directory_with_parents (_tmp2_, NULL, &_inner_error_);
#line 206 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		if (_inner_error_ != NULL) {
#line 921 "autosave-manager.c"
			goto __catch25_g_error;
		}
	}
	goto __finally25;
	__catch25_g_error:
	{
#line 204 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		g_clear_error (&_inner_error_);
#line 204 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_inner_error_ = NULL;
#line 932 "autosave-manager.c"
	}
	__finally25:
#line 204 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	if (_inner_error_ != NULL) {
#line 204 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		g_propagate_error (error, _inner_error_);
#line 204 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_g_object_unref0 (autosaves_dir);
#line 204 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		return NULL;
#line 943 "autosave-manager.c"
	}
#line 213 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp3_ = autosave_manager_AUTOSAVE_FILENAME;
#line 213 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp5_ = sqlite3_open (_tmp3_, &_tmp4_);
#line 213 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_sqlite3_close0 (connection);
#line 213 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	connection = _tmp4_;
#line 213 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	if (_tmp5_ != SQLITE_OK) {
#line 955 "autosave-manager.c"
		GError* _tmp6_;
#line 214 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp6_ = g_error_new_literal (G_IO_ERROR, G_IO_ERROR_FAILED, "Could not connect to autosave database");
#line 214 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_inner_error_ = _tmp6_;
#line 214 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		g_propagate_error (error, _inner_error_);
#line 214 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_sqlite3_close0 (connection);
#line 214 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_g_object_unref0 (autosaves_dir);
#line 214 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		return NULL;
#line 969 "autosave-manager.c"
	}
#line 215 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp7_ = g_strdup ("\n" \
"            CREATE TABLE IF NOT EXISTS pages (\n" \
"                id integer PRIMARY KEY,\n" \
"                process_id integer,\n" \
"                page_hash integer,\n" \
"                book_hash integer,\n" \
"                book_revision integer,\n" \
"                page_number integer,\n" \
"                dpi integer,\n" \
"                width integer,\n" \
"                height integer,\n" \
"                depth integer,\n" \
"                n_channels integer,\n" \
"                rowstride integer,\n" \
"                color_profile string,\n" \
"                crop_x integer,\n" \
"                crop_y integer,\n" \
"                crop_width integer,\n" \
"                crop_height integer,\n" \
"                scan_direction integer,\n" \
"                pixels binary\n" \
"            )");
#line 215 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	query = _tmp7_;
#line 237 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp8_ = connection;
#line 237 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp9_ = query;
#line 237 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp10_ = _sqlite3_exec (_tmp8_, _tmp9_, NULL, NULL, NULL);
#line 237 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_result_ = _tmp10_;
#line 238 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp11_ = _result_;
#line 238 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	if (_tmp11_ != SQLITE_OK) {
#line 987 "autosave-manager.c"
		gint _tmp12_;
#line 239 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp12_ = _result_;
#line 239 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		g_warning ("autosave-manager.vala:239: Error %d while executing query", _tmp12_);
#line 993 "autosave-manager.c"
	}
#line 240 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	result = connection;
#line 240 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_g_free0 (query);
#line 240 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_g_object_unref0 (autosaves_dir);
#line 240 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	return result;
#line 1003 "autosave-manager.c"
}


static void _autosave_manager_on_page_changed_page_size_changed (Page* _sender, gpointer self) {
#line 247 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	autosave_manager_on_page_changed (self, _sender);
#line 1010 "autosave-manager.c"
}


static void _autosave_manager_on_page_changed_page_scan_direction_changed (Page* _sender, gpointer self) {
#line 248 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	autosave_manager_on_page_changed (self, _sender);
#line 1017 "autosave-manager.c"
}


static void _autosave_manager_on_page_changed_page_crop_changed (Page* _sender, gpointer self) {
#line 249 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	autosave_manager_on_page_changed (self, _sender);
#line 1024 "autosave-manager.c"
}


static void _autosave_manager_on_page_changed_page_scan_finished (Page* _sender, gpointer self) {
#line 250 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	autosave_manager_on_page_changed (self, _sender);
#line 1031 "autosave-manager.c"
}


static void autosave_manager_on_page_added (AutosaveManager* self, Page* page) {
	Page* _tmp0_;
	Page* _tmp1_;
	Page* _tmp2_;
	Page* _tmp3_;
	Page* _tmp4_;
#line 243 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	g_return_if_fail (self != NULL);
#line 243 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	g_return_if_fail (page != NULL);
#line 245 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp0_ = page;
#line 245 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	autosave_manager_insert_page (self, _tmp0_);
#line 247 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp1_ = page;
#line 247 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	g_signal_connect (_tmp1_, "size-changed", (GCallback) _autosave_manager_on_page_changed_page_size_changed, self);
#line 248 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp2_ = page;
#line 248 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	g_signal_connect (_tmp2_, "scan-direction-changed", (GCallback) _autosave_manager_on_page_changed_page_scan_direction_changed, self);
#line 249 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp3_ = page;
#line 249 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	g_signal_connect (_tmp3_, "crop-changed", (GCallback) _autosave_manager_on_page_changed_page_crop_changed, self);
#line 250 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp4_ = page;
#line 250 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	g_signal_connect (_tmp4_, "scan-finished", (GCallback) _autosave_manager_on_page_changed_page_scan_finished, self);
#line 1065 "autosave-manager.c"
}


static void _autosave_manager_on_page_changed_page_pixels_changed (Page* _sender, gpointer self) {
#line 255 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	autosave_manager_on_page_changed (self, _sender);
#line 1072 "autosave-manager.c"
}


void autosave_manager_on_page_removed (AutosaveManager* self, Page* page) {
	Page* _tmp0_;
	guint _tmp1_ = 0U;
	Page* _tmp2_;
	guint _tmp3_ = 0U;
	Page* _tmp4_;
	guint _tmp5_ = 0U;
	Page* _tmp6_;
	guint _tmp7_ = 0U;
	Page* _tmp8_;
	const gchar* _tmp9_;
	const gchar* _tmp10_ = NULL;
	gchar* _tmp11_ = NULL;
	gchar* query;
	sqlite3_stmt* stmt = NULL;
	sqlite3* _tmp12_;
	const gchar* _tmp13_;
	sqlite3_stmt* _tmp14_ = NULL;
	gint _tmp15_ = 0;
	gint _result_;
	gint _tmp16_;
	sqlite3_stmt* _tmp22_;
	GHashFunc _tmp23_;
	Page* _tmp24_;
	guint _tmp25_ = 0U;
	sqlite3_stmt* _tmp26_;
	GHashFunc _tmp27_;
	Book* _tmp28_;
	Book* _tmp29_;
	guint _tmp30_ = 0U;
	sqlite3_stmt* _tmp31_;
	gint _tmp32_;
	sqlite3_stmt* _tmp33_;
	gint _tmp34_ = 0;
	gint _tmp35_;
#line 253 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	g_return_if_fail (self != NULL);
#line 253 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	g_return_if_fail (page != NULL);
#line 255 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp0_ = page;
#line 255 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	g_signal_parse_name ("pixels-changed", TYPE_PAGE, &_tmp1_, NULL, FALSE);
#line 255 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	g_signal_handlers_disconnect_matched (_tmp0_, G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp1_, 0, NULL, (GCallback) _autosave_manager_on_page_changed_page_pixels_changed, self);
#line 256 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp2_ = page;
#line 256 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	g_signal_parse_name ("size-changed", TYPE_PAGE, &_tmp3_, NULL, FALSE);
#line 256 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	g_signal_handlers_disconnect_matched (_tmp2_, G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp3_, 0, NULL, (GCallback) _autosave_manager_on_page_changed_page_size_changed, self);
#line 257 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp4_ = page;
#line 257 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	g_signal_parse_name ("scan-direction-changed", TYPE_PAGE, &_tmp5_, NULL, FALSE);
#line 257 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	g_signal_handlers_disconnect_matched (_tmp4_, G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp5_, 0, NULL, (GCallback) _autosave_manager_on_page_changed_page_scan_direction_changed, self);
#line 258 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp6_ = page;
#line 258 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	g_signal_parse_name ("crop-changed", TYPE_PAGE, &_tmp7_, NULL, FALSE);
#line 258 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	g_signal_handlers_disconnect_matched (_tmp6_, G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp7_, 0, NULL, (GCallback) _autosave_manager_on_page_changed_page_crop_changed, self);
#line 259 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp8_ = page;
#line 259 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	g_signal_connect (_tmp8_, "scan-finished", (GCallback) _autosave_manager_on_page_changed_page_scan_finished, self);
#line 261 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp9_ = autosave_manager_PID;
#line 261 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp10_ = string_to_string (_tmp9_);
#line 261 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp11_ = g_strconcat ("\n        DELETE FROM pages\n            WHERE process_id = ", _tmp10_, "\n" \
"              AND page_hash = ?2\n" \
"              AND book_hash = ?3\n" \
"              AND book_revision = ?4\n" \
"        ", NULL);
#line 261 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	query = _tmp11_;
#line 269 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp12_ = self->priv->database_connection;
#line 269 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp13_ = query;
#line 269 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp15_ = sqlite3_prepare_v2 (_tmp12_, _tmp13_, -1, &_tmp14_, NULL);
#line 269 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_sqlite3_finalize0 (stmt);
#line 269 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	stmt = _tmp14_;
#line 269 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_result_ = _tmp15_;
#line 270 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp16_ = _result_;
#line 270 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	if (_tmp16_ != SQLITE_OK) {
#line 1167 "autosave-manager.c"
		gint _tmp17_;
		gchar* _tmp18_ = NULL;
		gchar* _tmp19_;
		gchar* _tmp20_ = NULL;
		gchar* _tmp21_;
#line 271 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp17_ = _result_;
#line 271 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp18_ = g_strdup_printf ("%i", _tmp17_);
#line 271 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp19_ = _tmp18_;
#line 271 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp20_ = g_strconcat ("Error ", _tmp19_, " while preparing query", NULL);
#line 271 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp21_ = _tmp20_;
#line 271 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		g_warning ("autosave-manager.vala:271: %s", _tmp21_);
#line 271 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_g_free0 (_tmp21_);
#line 271 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_g_free0 (_tmp19_);
#line 1189 "autosave-manager.c"
	}
#line 272 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp22_ = stmt;
#line 272 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp23_ = g_direct_hash;
#line 272 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp24_ = page;
#line 272 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp25_ = _tmp23_ (_tmp24_);
#line 272 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	sqlite3_bind_int64 (_tmp22_, 2, (gint64) _tmp25_);
#line 273 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp26_ = stmt;
#line 273 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp27_ = g_direct_hash;
#line 273 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp28_ = autosave_manager_get_book (self);
#line 273 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp29_ = _tmp28_;
#line 273 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp30_ = _tmp27_ (_tmp29_);
#line 273 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	sqlite3_bind_int64 (_tmp26_, 3, (gint64) _tmp30_);
#line 274 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp31_ = stmt;
#line 274 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp32_ = self->priv->cur_book_revision;
#line 274 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	sqlite3_bind_int64 (_tmp31_, 4, (gint64) _tmp32_);
#line 276 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp33_ = stmt;
#line 276 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp34_ = sqlite3_step (_tmp33_);
#line 276 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_result_ = _tmp34_;
#line 277 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp35_ = _result_;
#line 277 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	if (_tmp35_ != SQLITE_DONE) {
#line 1229 "autosave-manager.c"
		gint _tmp36_;
#line 278 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp36_ = _result_;
#line 278 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		g_warning ("autosave-manager.vala:278: Error %d while executing query", _tmp36_);
#line 1235 "autosave-manager.c"
	}
#line 253 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_sqlite3_finalize0 (stmt);
#line 253 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_g_free0 (query);
#line 1241 "autosave-manager.c"
}


void autosave_manager_on_reordered (AutosaveManager* self) {
#line 281 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	g_return_if_fail (self != NULL);
#line 1248 "autosave-manager.c"
	{
		gint i;
#line 283 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		i = 0;
#line 1253 "autosave-manager.c"
		{
			gboolean _tmp0_;
#line 283 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
			_tmp0_ = TRUE;
#line 283 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
			while (TRUE) {
#line 1260 "autosave-manager.c"
				gboolean _tmp1_;
				gint _tmp3_;
				Book* _tmp4_;
				Book* _tmp5_;
				guint _tmp6_ = 0U;
				Book* _tmp7_;
				Book* _tmp8_;
				gint _tmp9_;
				Page* _tmp10_ = NULL;
				Page* page;
				const gchar* _tmp11_;
				const gchar* _tmp12_ = NULL;
				gchar* _tmp13_ = NULL;
				gchar* query;
				sqlite3_stmt* stmt = NULL;
				sqlite3* _tmp14_;
				const gchar* _tmp15_;
				sqlite3_stmt* _tmp16_ = NULL;
				gint _tmp17_ = 0;
				gint _result_;
				gint _tmp18_;
				sqlite3_stmt* _tmp24_;
				gint _tmp25_;
				sqlite3_stmt* _tmp26_;
				GHashFunc _tmp27_;
				Page* _tmp28_;
				guint _tmp29_ = 0U;
				sqlite3_stmt* _tmp30_;
				GHashFunc _tmp31_;
				Book* _tmp32_;
				Book* _tmp33_;
				guint _tmp34_ = 0U;
				sqlite3_stmt* _tmp35_;
				gint _tmp36_;
				sqlite3_stmt* _tmp37_;
				gint _tmp38_ = 0;
				gint _tmp39_;
#line 283 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				_tmp1_ = _tmp0_;
#line 283 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				if (!_tmp1_) {
#line 1302 "autosave-manager.c"
					gint _tmp2_;
#line 283 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
					_tmp2_ = i;
#line 283 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
					i = _tmp2_ + 1;
#line 1308 "autosave-manager.c"
				}
#line 283 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				_tmp0_ = FALSE;
#line 283 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				_tmp3_ = i;
#line 283 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				_tmp4_ = autosave_manager_get_book (self);
#line 283 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				_tmp5_ = _tmp4_;
#line 283 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				_tmp6_ = book_get_n_pages (_tmp5_);
#line 283 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				if (!(((guint) _tmp3_) < _tmp6_)) {
#line 283 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
					break;
#line 1324 "autosave-manager.c"
				}
#line 285 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				_tmp7_ = autosave_manager_get_book (self);
#line 285 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				_tmp8_ = _tmp7_;
#line 285 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				_tmp9_ = i;
#line 285 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				_tmp10_ = book_get_page (_tmp8_, _tmp9_);
#line 285 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				page = _tmp10_;
#line 286 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				_tmp11_ = autosave_manager_PID;
#line 286 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				_tmp12_ = string_to_string (_tmp11_);
#line 286 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				_tmp13_ = g_strconcat ("\n" \
"            UPDATE pages SET page_number = ?5\n" \
"            WHERE process_id = ", _tmp12_, "\n" \
"              AND page_hash = ?2\n" \
"              AND book_hash = ?3\n" \
"              AND book_revision = ?4\n" \
"            ", NULL);
#line 286 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				query = _tmp13_;
#line 294 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				_tmp14_ = self->priv->database_connection;
#line 294 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				_tmp15_ = query;
#line 294 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				_tmp17_ = sqlite3_prepare_v2 (_tmp14_, _tmp15_, -1, &_tmp16_, NULL);
#line 294 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				_sqlite3_finalize0 (stmt);
#line 294 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				stmt = _tmp16_;
#line 294 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				_result_ = _tmp17_;
#line 295 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				_tmp18_ = _result_;
#line 295 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				if (_tmp18_ != SQLITE_OK) {
#line 1360 "autosave-manager.c"
					gint _tmp19_;
					gchar* _tmp20_ = NULL;
					gchar* _tmp21_;
					gchar* _tmp22_ = NULL;
					gchar* _tmp23_;
#line 296 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
					_tmp19_ = _result_;
#line 296 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
					_tmp20_ = g_strdup_printf ("%i", _tmp19_);
#line 296 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
					_tmp21_ = _tmp20_;
#line 296 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
					_tmp22_ = g_strconcat ("Error ", _tmp21_, " while preparing query", NULL);
#line 296 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
					_tmp23_ = _tmp22_;
#line 296 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
					g_warning ("autosave-manager.vala:296: %s", _tmp23_);
#line 296 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
					_g_free0 (_tmp23_);
#line 296 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
					_g_free0 (_tmp21_);
#line 1382 "autosave-manager.c"
				}
#line 298 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				_tmp24_ = stmt;
#line 298 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				_tmp25_ = i;
#line 298 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				sqlite3_bind_int64 (_tmp24_, 5, (gint64) _tmp25_);
#line 299 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				_tmp26_ = stmt;
#line 299 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				_tmp27_ = g_direct_hash;
#line 299 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				_tmp28_ = page;
#line 299 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				_tmp29_ = _tmp27_ (_tmp28_);
#line 299 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				sqlite3_bind_int64 (_tmp26_, 2, (gint64) _tmp29_);
#line 300 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				_tmp30_ = stmt;
#line 300 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				_tmp31_ = g_direct_hash;
#line 300 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				_tmp32_ = autosave_manager_get_book (self);
#line 300 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				_tmp33_ = _tmp32_;
#line 300 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				_tmp34_ = _tmp31_ (_tmp33_);
#line 300 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				sqlite3_bind_int64 (_tmp30_, 3, (gint64) _tmp34_);
#line 301 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				_tmp35_ = stmt;
#line 301 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				_tmp36_ = self->priv->cur_book_revision;
#line 301 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				sqlite3_bind_int64 (_tmp35_, 4, (gint64) _tmp36_);
#line 303 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				_tmp37_ = stmt;
#line 303 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				_tmp38_ = sqlite3_step (_tmp37_);
#line 303 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				_result_ = _tmp38_;
#line 304 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				_tmp39_ = _result_;
#line 304 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				if (_tmp39_ != SQLITE_DONE) {
#line 1428 "autosave-manager.c"
					gint _tmp40_;
#line 305 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
					_tmp40_ = _result_;
#line 305 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
					g_warning ("autosave-manager.vala:305: Error %d while executing query", _tmp40_);
#line 1434 "autosave-manager.c"
				}
#line 283 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				_sqlite3_finalize0 (stmt);
#line 283 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				_g_free0 (query);
#line 283 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				_page_unref0 (page);
#line 1442 "autosave-manager.c"
			}
		}
	}
}


void autosave_manager_on_page_changed (AutosaveManager* self, Page* page) {
	Page* _tmp0_;
#line 309 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	g_return_if_fail (self != NULL);
#line 309 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	g_return_if_fail (page != NULL);
#line 311 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp0_ = page;
#line 311 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	autosave_manager_update_page (self, _tmp0_);
#line 1459 "autosave-manager.c"
}


void autosave_manager_on_needs_saving_changed (AutosaveManager* self, Book* book) {
#line 314 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	g_return_if_fail (self != NULL);
#line 314 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	g_return_if_fail (book != NULL);
#line 1468 "autosave-manager.c"
	{
		gint n;
#line 316 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		n = 0;
#line 1473 "autosave-manager.c"
		{
			gboolean _tmp0_;
#line 316 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
			_tmp0_ = TRUE;
#line 316 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
			while (TRUE) {
#line 1480 "autosave-manager.c"
				gboolean _tmp1_;
				gint _tmp3_;
				Book* _tmp4_;
				guint _tmp5_ = 0U;
				Book* _tmp6_;
				gint _tmp7_;
				Page* _tmp8_ = NULL;
				Page* page;
				Page* _tmp9_;
#line 316 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				_tmp1_ = _tmp0_;
#line 316 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				if (!_tmp1_) {
#line 1494 "autosave-manager.c"
					gint _tmp2_;
#line 316 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
					_tmp2_ = n;
#line 316 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
					n = _tmp2_ + 1;
#line 1500 "autosave-manager.c"
				}
#line 316 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				_tmp0_ = FALSE;
#line 316 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				_tmp3_ = n;
#line 316 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				_tmp4_ = book;
#line 316 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				_tmp5_ = book_get_n_pages (_tmp4_);
#line 316 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				if (!(((guint) _tmp3_) < _tmp5_)) {
#line 316 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
					break;
#line 1514 "autosave-manager.c"
				}
#line 318 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				_tmp6_ = book;
#line 318 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				_tmp7_ = n;
#line 318 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				_tmp8_ = book_get_page (_tmp6_, _tmp7_);
#line 318 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				page = _tmp8_;
#line 319 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				_tmp9_ = page;
#line 319 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				autosave_manager_update_page (self, _tmp9_);
#line 316 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				_page_unref0 (page);
#line 1530 "autosave-manager.c"
			}
		}
	}
}


void autosave_manager_on_cleared (AutosaveManager* self) {
	gint _tmp0_;
#line 325 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	g_return_if_fail (self != NULL);
#line 327 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp0_ = self->priv->cur_book_revision;
#line 327 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	self->priv->cur_book_revision = _tmp0_ + 1;
#line 1545 "autosave-manager.c"
}


static void autosave_manager_insert_page (AutosaveManager* self, Page* page) {
	const gchar* _tmp0_;
	const gchar* _tmp1_ = NULL;
	gchar* _tmp2_ = NULL;
	gchar* query;
	sqlite3_stmt* stmt = NULL;
	sqlite3* _tmp3_;
	const gchar* _tmp4_;
	sqlite3_stmt* _tmp5_ = NULL;
	gint _tmp6_ = 0;
	gint _result_;
	gint _tmp7_;
	sqlite3_stmt* _tmp13_;
	GHashFunc _tmp14_;
	Page* _tmp15_;
	guint _tmp16_ = 0U;
	sqlite3_stmt* _tmp17_;
	GHashFunc _tmp18_;
	Book* _tmp19_;
	Book* _tmp20_;
	guint _tmp21_ = 0U;
	sqlite3_stmt* _tmp22_;
	gint _tmp23_;
	sqlite3_stmt* _tmp24_;
	gint _tmp25_ = 0;
	gint _tmp26_;
	Page* _tmp28_;
#line 330 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	g_return_if_fail (self != NULL);
#line 330 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	g_return_if_fail (page != NULL);
#line 332 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	g_debug ("autosave-manager.vala:332: Adding an autosave for a new page");
#line 333 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp0_ = autosave_manager_PID;
#line 333 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp1_ = string_to_string (_tmp0_);
#line 333 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp2_ = g_strconcat ("\n" \
"            INSERT INTO pages\n" \
"                (process_id,\n" \
"                page_hash,\n" \
"                book_hash,\n" \
"                book_revision)\n" \
"                VALUES\n" \
"                (", _tmp1_, ",\n" \
"                ?2,\n" \
"                ?3,\n" \
"                ?4)\n" \
"        ", NULL);
#line 333 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	query = _tmp2_;
#line 346 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp3_ = self->priv->database_connection;
#line 346 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp4_ = query;
#line 346 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp6_ = sqlite3_prepare_v2 (_tmp3_, _tmp4_, -1, &_tmp5_, NULL);
#line 346 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_sqlite3_finalize0 (stmt);
#line 346 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	stmt = _tmp5_;
#line 346 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_result_ = _tmp6_;
#line 347 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp7_ = _result_;
#line 347 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	if (_tmp7_ != SQLITE_OK) {
#line 1606 "autosave-manager.c"
		gint _tmp8_;
		gchar* _tmp9_ = NULL;
		gchar* _tmp10_;
		gchar* _tmp11_ = NULL;
		gchar* _tmp12_;
#line 348 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp8_ = _result_;
#line 348 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp9_ = g_strdup_printf ("%i", _tmp8_);
#line 348 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp10_ = _tmp9_;
#line 348 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp11_ = g_strconcat ("Error ", _tmp10_, " while preparing query", NULL);
#line 348 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp12_ = _tmp11_;
#line 348 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		g_warning ("autosave-manager.vala:348: %s", _tmp12_);
#line 348 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_g_free0 (_tmp12_);
#line 348 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_g_free0 (_tmp10_);
#line 1628 "autosave-manager.c"
	}
#line 350 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp13_ = stmt;
#line 350 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp14_ = g_direct_hash;
#line 350 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp15_ = page;
#line 350 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp16_ = _tmp14_ (_tmp15_);
#line 350 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	sqlite3_bind_int64 (_tmp13_, 2, (gint64) _tmp16_);
#line 351 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp17_ = stmt;
#line 351 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp18_ = g_direct_hash;
#line 351 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp19_ = autosave_manager_get_book (self);
#line 351 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp20_ = _tmp19_;
#line 351 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp21_ = _tmp18_ (_tmp20_);
#line 351 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	sqlite3_bind_int64 (_tmp17_, 3, (gint64) _tmp21_);
#line 352 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp22_ = stmt;
#line 352 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp23_ = self->priv->cur_book_revision;
#line 352 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	sqlite3_bind_int64 (_tmp22_, 4, (gint64) _tmp23_);
#line 354 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp24_ = stmt;
#line 354 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp25_ = sqlite3_step (_tmp24_);
#line 354 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_result_ = _tmp25_;
#line 355 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp26_ = _result_;
#line 355 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	if (_tmp26_ != SQLITE_DONE) {
#line 1668 "autosave-manager.c"
		gint _tmp27_;
#line 356 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp27_ = _result_;
#line 356 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		g_warning ("autosave-manager.vala:356: Error %d while executing query", _tmp27_);
#line 1674 "autosave-manager.c"
	}
#line 358 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp28_ = page;
#line 358 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	autosave_manager_update_page (self, _tmp28_);
#line 330 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_sqlite3_finalize0 (stmt);
#line 330 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_g_free0 (query);
#line 1684 "autosave-manager.c"
}


static gpointer _page_ref0 (gpointer self) {
#line 363 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	return self ? page_ref (self) : NULL;
#line 1691 "autosave-manager.c"
}


static gboolean __lambda2_ (AutosaveManager* self) {
	gboolean result = FALSE;
	GHashTable* _tmp0_;
	GHashTableIter iter = {0};
	Page* p = NULL;
	gboolean is_dirty = FALSE;
	GHashTable* _tmp6_;
#line 368 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp0_ = self->priv->dirty_pages;
#line 368 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	g_hash_table_iter_init (&iter, _tmp0_);
#line 371 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	while (TRUE) {
#line 1708 "autosave-manager.c"
		gconstpointer _tmp1_ = NULL;
		gconstpointer _tmp2_ = NULL;
		gboolean _tmp3_ = FALSE;
		Page* _tmp4_;
		Page* _tmp5_;
#line 371 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp3_ = g_hash_table_iter_next (&iter, &_tmp1_, &_tmp2_);
#line 371 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_page_unref0 (p);
#line 371 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp4_ = _page_ref0 (_tmp1_);
#line 371 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		p = _tmp4_;
#line 371 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		is_dirty = _tmp2_;
#line 371 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		if (!_tmp3_) {
#line 371 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
			break;
#line 1728 "autosave-manager.c"
		}
#line 372 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp5_ = p;
#line 372 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		autosave_manager_real_update_page (self, _tmp5_);
#line 1734 "autosave-manager.c"
	}
#line 374 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp6_ = self->priv->dirty_pages;
#line 374 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	g_hash_table_remove_all (_tmp6_);
#line 375 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	self->priv->update_timeout = (guint) 0;
#line 377 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	result = FALSE;
#line 377 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_page_unref0 (p);
#line 377 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	return result;
#line 1748 "autosave-manager.c"
}


static gboolean ___lambda2__gsource_func (gpointer self) {
	gboolean result;
	result = __lambda2_ (self);
#line 366 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	return result;
#line 1757 "autosave-manager.c"
}


static void autosave_manager_update_page (AutosaveManager* self, Page* page) {
	GHashTable* _tmp0_;
	Page* _tmp1_;
	Page* _tmp2_;
	guint _tmp3_;
	guint _tmp5_ = 0U;
#line 361 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	g_return_if_fail (self != NULL);
#line 361 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	g_return_if_fail (page != NULL);
#line 363 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp0_ = self->priv->dirty_pages;
#line 363 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp1_ = page;
#line 363 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp2_ = _page_ref0 (_tmp1_);
#line 363 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	g_hash_table_insert (_tmp0_, _tmp2_, (gpointer) ((gintptr) TRUE));
#line 364 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp3_ = self->priv->update_timeout;
#line 364 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	if (_tmp3_ > ((guint) 0)) {
#line 1783 "autosave-manager.c"
		guint _tmp4_;
#line 365 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp4_ = self->priv->update_timeout;
#line 365 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		g_source_remove (_tmp4_);
#line 1789 "autosave-manager.c"
	}
#line 366 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp5_ = g_timeout_add_full (G_PRIORITY_DEFAULT, (guint) 100, ___lambda2__gsource_func, autosave_manager_ref (self), autosave_manager_unref);
#line 366 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	self->priv->update_timeout = _tmp5_;
#line 1795 "autosave-manager.c"
}


static void autosave_manager_real_update_page (AutosaveManager* self, Page* page) {
	gint crop_x = 0;
	gint crop_y = 0;
	gint crop_width = 0;
	gint crop_height = 0;
	Page* _tmp0_;
	gint _tmp1_ = 0;
	gint _tmp2_ = 0;
	gint _tmp3_ = 0;
	gint _tmp4_ = 0;
	sqlite3_stmt* stmt = NULL;
	Book* _tmp5_;
	Book* _tmp6_;
	Page* _tmp7_;
	guint _tmp8_ = 0U;
	gchar* _tmp9_ = NULL;
	gchar* _tmp10_;
	Page* _tmp11_;
	gint _tmp12_ = 0;
	gchar* _tmp13_ = NULL;
	gchar* _tmp14_;
	Page* _tmp15_;
	gint _tmp16_ = 0;
	gchar* _tmp17_ = NULL;
	gchar* _tmp18_;
	Page* _tmp19_;
	gint _tmp20_ = 0;
	gchar* _tmp21_ = NULL;
	gchar* _tmp22_;
	Page* _tmp23_;
	gint _tmp24_ = 0;
	gchar* _tmp25_ = NULL;
	gchar* _tmp26_;
	Page* _tmp27_;
	gint _tmp28_ = 0;
	gchar* _tmp29_ = NULL;
	gchar* _tmp30_;
	Page* _tmp31_;
	gint _tmp32_ = 0;
	gchar* _tmp33_ = NULL;
	gchar* _tmp34_;
	gint _tmp35_;
	gchar* _tmp36_ = NULL;
	gchar* _tmp37_;
	gint _tmp38_;
	gchar* _tmp39_ = NULL;
	gchar* _tmp40_;
	gint _tmp41_;
	gchar* _tmp42_ = NULL;
	gchar* _tmp43_;
	gint _tmp44_;
	gchar* _tmp45_ = NULL;
	gchar* _tmp46_;
	Page* _tmp47_;
	ScanDirection _tmp48_ = 0;
	gchar* _tmp49_ = NULL;
	gchar* _tmp50_;
	const gchar* _tmp51_;
	const gchar* _tmp52_ = NULL;
	gchar* _tmp53_ = NULL;
	gchar* _tmp54_;
	gchar* query;
	sqlite3* _tmp55_;
	const gchar* _tmp56_;
	sqlite3_stmt* _tmp57_ = NULL;
	gint _tmp58_ = 0;
	gint _result_;
	gint _tmp59_;
	sqlite3_stmt* _tmp61_;
	GHashFunc _tmp62_;
	Page* _tmp63_;
	guint _tmp64_ = 0U;
	sqlite3_stmt* _tmp65_;
	GHashFunc _tmp66_;
	Book* _tmp67_;
	Book* _tmp68_;
	guint _tmp69_ = 0U;
	sqlite3_stmt* _tmp70_;
	gint _tmp71_;
	Page* _tmp72_;
	gchar* _tmp73_ = NULL;
	gchar* _tmp74_;
	const gchar* _tmp75_;
	sqlite3_stmt* _tmp77_;
	const gchar* _tmp78_;
	gchar* _tmp79_;
	GDestroyNotify _tmp80_;
	gint _tmp81_ = 0;
	gint _tmp82_;
	Page* _tmp84_;
	gint _tmp85_ = 0;
	guchar* _tmp86_ = NULL;
	sqlite3_stmt* _tmp99_;
	gint _tmp100_ = 0;
#line 381 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	g_return_if_fail (self != NULL);
#line 381 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	g_return_if_fail (page != NULL);
#line 383 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	g_debug ("autosave-manager.vala:383: Updating the autosave for a page");
#line 389 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp0_ = page;
#line 389 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	page_get_crop (_tmp0_, &_tmp1_, &_tmp2_, &_tmp3_, &_tmp4_);
#line 389 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	crop_x = _tmp1_;
#line 389 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	crop_y = _tmp2_;
#line 389 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	crop_width = _tmp3_;
#line 389 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	crop_height = _tmp4_;
#line 392 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp5_ = autosave_manager_get_book (self);
#line 392 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp6_ = _tmp5_;
#line 392 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp7_ = page;
#line 392 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp8_ = book_get_page_index (_tmp6_, _tmp7_);
#line 392 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp9_ = g_strdup_printf ("%u", _tmp8_);
#line 392 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp10_ = _tmp9_;
#line 392 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp11_ = page;
#line 392 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp12_ = page_get_dpi (_tmp11_);
#line 392 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp13_ = g_strdup_printf ("%i", _tmp12_);
#line 392 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp14_ = _tmp13_;
#line 392 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp15_ = page;
#line 392 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp16_ = page_get_width (_tmp15_);
#line 392 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp17_ = g_strdup_printf ("%i", _tmp16_);
#line 392 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp18_ = _tmp17_;
#line 392 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp19_ = page;
#line 392 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp20_ = page_get_height (_tmp19_);
#line 392 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp21_ = g_strdup_printf ("%i", _tmp20_);
#line 392 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp22_ = _tmp21_;
#line 392 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp23_ = page;
#line 392 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp24_ = page_get_depth (_tmp23_);
#line 392 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp25_ = g_strdup_printf ("%i", _tmp24_);
#line 392 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp26_ = _tmp25_;
#line 392 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp27_ = page;
#line 392 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp28_ = page_get_n_channels (_tmp27_);
#line 392 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp29_ = g_strdup_printf ("%i", _tmp28_);
#line 392 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp30_ = _tmp29_;
#line 392 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp31_ = page;
#line 392 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp32_ = page_get_rowstride (_tmp31_);
#line 392 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp33_ = g_strdup_printf ("%i", _tmp32_);
#line 392 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp34_ = _tmp33_;
#line 392 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp35_ = crop_x;
#line 392 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp36_ = g_strdup_printf ("%i", _tmp35_);
#line 392 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp37_ = _tmp36_;
#line 392 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp38_ = crop_y;
#line 392 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp39_ = g_strdup_printf ("%i", _tmp38_);
#line 392 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp40_ = _tmp39_;
#line 392 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp41_ = crop_width;
#line 392 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp42_ = g_strdup_printf ("%i", _tmp41_);
#line 392 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp43_ = _tmp42_;
#line 392 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp44_ = crop_height;
#line 392 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp45_ = g_strdup_printf ("%i", _tmp44_);
#line 392 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp46_ = _tmp45_;
#line 392 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp47_ = page;
#line 392 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp48_ = page_get_scan_direction (_tmp47_);
#line 392 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp49_ = g_strdup_printf ("%i", (gint) _tmp48_);
#line 392 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp50_ = _tmp49_;
#line 392 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp51_ = autosave_manager_PID;
#line 392 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp52_ = string_to_string (_tmp51_);
#line 392 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp53_ = g_strconcat ("\n" \
"            UPDATE pages\n" \
"                SET\n" \
"                page_number=", _tmp10_, ",\n                dpi=", _tmp14_, ",\n                width=", _tmp18_, ",\n                height=", _tmp22_, ",\n                depth=", _tmp26_, ",\n                n_channels=", _tmp30_, ",\n                rowstride=", _tmp34_, ",\n                crop_x=", _tmp37_, ",\n                crop_y=", _tmp40_, ",\n                crop_width=", _tmp43_, ",\n                crop_height=", _tmp46_, ",\n                scan_direction=", _tmp50_, ",\n" \
"                color_profile=?1,\n" \
"                pixels=?2\n" \
"                WHERE process_id = ", _tmp52_, "\n" \
"                  AND page_hash = ?4\n" \
"                  AND book_hash = ?5\n" \
"                  AND book_revision = ?6\n" \
"            ", NULL);
#line 392 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp54_ = _tmp53_;
#line 392 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_g_free0 (_tmp50_);
#line 392 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_g_free0 (_tmp46_);
#line 392 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_g_free0 (_tmp43_);
#line 392 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_g_free0 (_tmp40_);
#line 392 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_g_free0 (_tmp37_);
#line 392 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_g_free0 (_tmp34_);
#line 392 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_g_free0 (_tmp30_);
#line 392 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_g_free0 (_tmp26_);
#line 392 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_g_free0 (_tmp22_);
#line 392 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_g_free0 (_tmp18_);
#line 392 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_g_free0 (_tmp14_);
#line 392 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_g_free0 (_tmp10_);
#line 392 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	query = _tmp54_;
#line 415 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp55_ = self->priv->database_connection;
#line 415 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp56_ = query;
#line 415 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp58_ = sqlite3_prepare_v2 (_tmp55_, _tmp56_, -1, &_tmp57_, NULL);
#line 415 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_sqlite3_finalize0 (stmt);
#line 415 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	stmt = _tmp57_;
#line 415 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_result_ = _tmp58_;
#line 416 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp59_ = _result_;
#line 416 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	if (_tmp59_ != SQLITE_OK) {
#line 2053 "autosave-manager.c"
		gint _tmp60_;
#line 418 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp60_ = _result_;
#line 418 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		g_warning ("autosave-manager.vala:418: Error %d while preparing statement", _tmp60_);
#line 419 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_g_free0 (query);
#line 419 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_sqlite3_finalize0 (stmt);
#line 419 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		return;
#line 2065 "autosave-manager.c"
	}
#line 422 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp61_ = stmt;
#line 422 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp62_ = g_direct_hash;
#line 422 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp63_ = page;
#line 422 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp64_ = _tmp62_ (_tmp63_);
#line 422 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	sqlite3_bind_int64 (_tmp61_, 4, (gint64) _tmp64_);
#line 423 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp65_ = stmt;
#line 423 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp66_ = g_direct_hash;
#line 423 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp67_ = autosave_manager_get_book (self);
#line 423 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp68_ = _tmp67_;
#line 423 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp69_ = _tmp66_ (_tmp68_);
#line 423 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	sqlite3_bind_int64 (_tmp65_, 5, (gint64) _tmp69_);
#line 424 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp70_ = stmt;
#line 424 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp71_ = self->priv->cur_book_revision;
#line 424 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	sqlite3_bind_int64 (_tmp70_, 6, (gint64) _tmp71_);
#line 425 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp72_ = page;
#line 425 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp73_ = page_get_color_profile (_tmp72_);
#line 425 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp74_ = _tmp73_;
#line 425 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp75_ = _tmp74_;
#line 425 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	if (_tmp75_ == NULL) {
#line 2105 "autosave-manager.c"
		gchar* _tmp76_;
#line 425 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp76_ = g_strdup ("");
#line 425 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_g_free0 (_tmp74_);
#line 425 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp74_ = _tmp76_;
#line 2113 "autosave-manager.c"
	}
#line 425 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp77_ = stmt;
#line 425 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp78_ = _tmp74_;
#line 425 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp79_ = g_strdup (_tmp78_);
#line 425 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp80_ = g_free;
#line 425 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp81_ = sqlite3_bind_text (_tmp77_, 1, _tmp79_, -1, _tmp80_);
#line 425 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_result_ = _tmp81_;
#line 427 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp82_ = _result_;
#line 427 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	if (_tmp82_ != SQLITE_OK) {
#line 2131 "autosave-manager.c"
		gint _tmp83_;
#line 428 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp83_ = _result_;
#line 428 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		g_warning ("autosave-manager.vala:428: Error %d while binding text", _tmp83_);
#line 2137 "autosave-manager.c"
	}
#line 430 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp84_ = page;
#line 430 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp86_ = page_get_pixels (_tmp84_, &_tmp85_);
#line 430 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	if (_tmp86_ != NULL) {
#line 2145 "autosave-manager.c"
		sqlite3_stmt* _tmp87_;
		Page* _tmp88_;
		gint _tmp89_ = 0;
		guchar* _tmp90_ = NULL;
		Page* _tmp91_;
		gint _tmp92_ = 0;
		guchar* _tmp93_ = NULL;
		gint _tmp94_ = 0;
		gint _tmp95_;
#line 433 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp87_ = stmt;
#line 433 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp88_ = page;
#line 433 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp90_ = page_get_pixels (_tmp88_, &_tmp89_);
#line 433 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp91_ = page;
#line 433 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp93_ = page_get_pixels (_tmp91_, &_tmp92_);
#line 433 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp94_ = sqlite3_bind_blob (_tmp87_, 2, _tmp90_, _tmp92_, (GDestroyNotify) (-1));
#line 433 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_result_ = _tmp94_;
#line 434 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp95_ = _result_;
#line 434 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		if (_tmp95_ != SQLITE_OK) {
#line 2173 "autosave-manager.c"
			gint _tmp96_;
#line 435 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
			_tmp96_ = _result_;
#line 435 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
			g_warning ("autosave-manager.vala:435: Error %d while binding blob", _tmp96_);
#line 2179 "autosave-manager.c"
		}
	} else {
		sqlite3_stmt* _tmp97_;
		gint _tmp98_ = 0;
#line 438 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp97_ = stmt;
#line 438 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp98_ = sqlite3_bind_null (_tmp97_, 2);
#line 438 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		g_warn_if_fail (_tmp98_ == SQLITE_OK);
#line 2190 "autosave-manager.c"
	}
#line 440 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp99_ = stmt;
#line 440 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp100_ = sqlite3_step (_tmp99_);
#line 440 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	g_warn_if_fail (_tmp100_ == SQLITE_DONE);
#line 381 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_g_free0 (_tmp74_);
#line 381 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_g_free0 (query);
#line 381 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_sqlite3_finalize0 (stmt);
#line 2204 "autosave-manager.c"
}


static void autosave_manager_recover_book (AutosaveManager* self, Book** book) {
	sqlite3_stmt* stmt = NULL;
	const gchar* _tmp0_;
	const gchar* _tmp1_ = NULL;
	const gchar* _tmp2_;
	const gchar* _tmp3_ = NULL;
	gchar* _tmp4_ = NULL;
	gchar* query;
	sqlite3* _tmp5_;
	const gchar* _tmp6_;
	sqlite3_stmt* _tmp7_ = NULL;
	gint _tmp8_ = 0;
	gint _result_;
	gint _tmp9_;
	gboolean first;
	gboolean _tmp125_;
#line 443 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	g_return_if_fail (self != NULL);
#line 443 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	g_return_if_fail (*book != NULL);
#line 446 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp0_ = autosave_manager_PID;
#line 446 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp1_ = string_to_string (_tmp0_);
#line 446 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp2_ = autosave_manager_PID;
#line 446 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp3_ = string_to_string (_tmp2_);
#line 446 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp4_ = g_strconcat ("\n" \
"            SELECT process_id,\n" \
"                page_hash,\n" \
"                book_hash,\n" \
"                book_revision,\n" \
"                page_number,\n" \
"                dpi,\n" \
"                width,\n" \
"                height,\n" \
"                depth,\n" \
"                n_channels,\n" \
"                rowstride,\n" \
"                color_profile,\n" \
"                crop_x,\n" \
"                crop_y,\n" \
"                crop_width,\n" \
"                crop_height,\n" \
"                scan_direction,\n" \
"                pixels,\n" \
"                id\n" \
"            FROM pages\n" \
"            WHERE process_id = ", _tmp1_, "\n" \
"              AND book_revision = (\n" \
"                  SELECT MAX(book_revision) FROM pages WHERE process_i" \
"d = ", _tmp3_, "\n              )\n            ORDER BY page_number\n        ", NULL);
#line 446 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	query = _tmp4_;
#line 474 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp5_ = self->priv->database_connection;
#line 474 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp6_ = query;
#line 474 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp8_ = sqlite3_prepare_v2 (_tmp5_, _tmp6_, -1, &_tmp7_, NULL);
#line 474 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_sqlite3_finalize0 (stmt);
#line 474 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	stmt = _tmp7_;
#line 474 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_result_ = _tmp8_;
#line 475 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp9_ = _result_;
#line 475 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	if (_tmp9_ != SQLITE_OK) {
#line 2256 "autosave-manager.c"
		gint _tmp10_;
#line 476 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp10_ = _result_;
#line 476 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		g_warning ("autosave-manager.vala:476: Error %d while preparing statement", _tmp10_);
#line 2262 "autosave-manager.c"
	}
#line 478 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	first = TRUE;
#line 479 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	while (TRUE) {
#line 2268 "autosave-manager.c"
		sqlite3_stmt* _tmp11_;
		gint _tmp12_ = 0;
		gboolean _tmp13_;
		sqlite3_stmt* _tmp15_;
		gint _tmp16_ = 0;
		gint dpi;
		sqlite3_stmt* _tmp17_;
		gint _tmp18_ = 0;
		gint width;
		sqlite3_stmt* _tmp19_;
		gint _tmp20_ = 0;
		gint height;
		sqlite3_stmt* _tmp21_;
		gint _tmp22_ = 0;
		gint depth;
		sqlite3_stmt* _tmp23_;
		gint _tmp24_ = 0;
		gint n_channels;
		sqlite3_stmt* _tmp25_;
		gint _tmp26_ = 0;
		ScanDirection scan_direction;
		gboolean _tmp27_ = FALSE;
		gint _tmp28_;
		gboolean _tmp30_;
		gint _tmp31_;
		gchar* _tmp32_ = NULL;
		gchar* _tmp33_;
		gint _tmp34_;
		gchar* _tmp35_ = NULL;
		gchar* _tmp36_;
		gchar* _tmp37_ = NULL;
		gchar* _tmp38_;
		Book* _tmp39_;
		gint _tmp40_;
		gint _tmp41_;
		gint _tmp42_;
		ScanDirection _tmp43_;
		Page* _tmp44_ = NULL;
		Page* new_page;
		gboolean _tmp45_ = FALSE;
		gint _tmp46_;
		gboolean _tmp48_;
		Page* _tmp64_;
		sqlite3_stmt* _tmp65_;
		const gchar* _tmp66_ = NULL;
		sqlite3_stmt* _tmp67_;
		gint _tmp68_ = 0;
		gint crop_x;
		sqlite3_stmt* _tmp69_;
		gint _tmp70_ = 0;
		gint crop_y;
		sqlite3_stmt* _tmp71_;
		gint _tmp72_ = 0;
		gint crop_width;
		sqlite3_stmt* _tmp73_;
		gint _tmp74_ = 0;
		gint crop_height;
		gboolean _tmp75_ = FALSE;
		gint _tmp76_;
		gboolean _tmp78_;
		sqlite3_stmt* _tmp85_;
		gint _tmp86_ = 0;
		guchar* _tmp87_ = NULL;
		guchar* new_pixels;
		gint new_pixels_length1;
		gint _new_pixels_size_;
		guchar* _tmp88_;
		gint _tmp88__length1;
		sqlite3_stmt* _tmp89_;
		void* _tmp90_ = NULL;
		sqlite3_stmt* _tmp91_;
		gint _tmp92_ = 0;
		Page* _tmp93_;
		guchar* _tmp94_;
		gint _tmp94__length1;
		sqlite3_stmt* _tmp95_;
		gint _tmp96_ = 0;
		gint id;
		gint _tmp97_;
		gchar* _tmp98_ = NULL;
		gchar* _tmp99_;
		gchar* _tmp100_ = NULL;
		sqlite3_stmt* stmt2 = NULL;
		sqlite3* _tmp101_;
		const gchar* _tmp102_;
		sqlite3_stmt* _tmp103_ = NULL;
		gint _tmp104_ = 0;
		gint result2;
		gint _tmp105_;
		sqlite3_stmt* _tmp111_;
		GHashFunc _tmp112_;
		Page* _tmp113_;
		guint _tmp114_ = 0U;
		sqlite3_stmt* _tmp115_;
		GHashFunc _tmp116_;
		Book* _tmp117_;
		guint _tmp118_ = 0U;
		sqlite3_stmt* _tmp119_;
		gint _tmp120_;
		sqlite3_stmt* _tmp121_;
		gint _tmp122_ = 0;
		gint _tmp123_;
#line 479 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp11_ = stmt;
#line 479 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp12_ = sqlite3_step (_tmp11_);
#line 479 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		if (!(SQLITE_ROW == _tmp12_)) {
#line 479 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
			break;
#line 2379 "autosave-manager.c"
		}
#line 481 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		g_debug ("autosave-manager.vala:481: Found a page that needs to be recovered");
#line 482 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp13_ = first;
#line 482 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		if (_tmp13_) {
#line 2387 "autosave-manager.c"
			Book* _tmp14_;
#line 484 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
			_tmp14_ = *book;
#line 484 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
			book_clear (_tmp14_);
#line 485 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
			first = FALSE;
#line 2395 "autosave-manager.c"
		}
#line 487 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp15_ = stmt;
#line 487 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp16_ = sqlite3_column_int (_tmp15_, 5);
#line 487 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		dpi = _tmp16_;
#line 488 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp17_ = stmt;
#line 488 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp18_ = sqlite3_column_int (_tmp17_, 6);
#line 488 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		width = _tmp18_;
#line 489 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp19_ = stmt;
#line 489 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp20_ = sqlite3_column_int (_tmp19_, 7);
#line 489 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		height = _tmp20_;
#line 490 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp21_ = stmt;
#line 490 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp22_ = sqlite3_column_int (_tmp21_, 8);
#line 490 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		depth = _tmp22_;
#line 491 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp23_ = stmt;
#line 491 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp24_ = sqlite3_column_int (_tmp23_, 9);
#line 491 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		n_channels = _tmp24_;
#line 492 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp25_ = stmt;
#line 492 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp26_ = sqlite3_column_int (_tmp25_, 16);
#line 492 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		scan_direction = (ScanDirection) _tmp26_;
#line 494 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp28_ = width;
#line 494 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		if (_tmp28_ <= 0) {
#line 494 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
			_tmp27_ = TRUE;
#line 2439 "autosave-manager.c"
		} else {
			gint _tmp29_;
#line 494 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
			_tmp29_ = height;
#line 494 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
			_tmp27_ = _tmp29_ <= 0;
#line 2446 "autosave-manager.c"
		}
#line 494 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp30_ = _tmp27_;
#line 494 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		if (_tmp30_) {
#line 495 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
			continue;
#line 2454 "autosave-manager.c"
		}
#line 497 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp31_ = width;
#line 497 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp32_ = g_strdup_printf ("%i", _tmp31_);
#line 497 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp33_ = _tmp32_;
#line 497 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp34_ = height;
#line 497 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp35_ = g_strdup_printf ("%i", _tmp34_);
#line 497 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp36_ = _tmp35_;
#line 497 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp37_ = g_strconcat ("Restoring a page of size ", _tmp33_, " x ", _tmp36_, NULL);
#line 497 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp38_ = _tmp37_;
#line 497 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		g_debug ("autosave-manager.vala:497: %s", _tmp38_);
#line 497 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_g_free0 (_tmp38_);
#line 497 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_g_free0 (_tmp36_);
#line 497 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_g_free0 (_tmp33_);
#line 498 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp39_ = *book;
#line 498 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp40_ = width;
#line 498 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp41_ = height;
#line 498 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp42_ = dpi;
#line 498 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp43_ = scan_direction;
#line 498 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp44_ = book_append_page (_tmp39_, _tmp40_, _tmp41_, _tmp42_, _tmp43_);
#line 498 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		new_page = _tmp44_;
#line 500 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp46_ = depth;
#line 500 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		if (_tmp46_ > 0) {
#line 2498 "autosave-manager.c"
			gint _tmp47_;
#line 500 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
			_tmp47_ = n_channels;
#line 500 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
			_tmp45_ = _tmp47_ > 0;
#line 2504 "autosave-manager.c"
		} else {
#line 500 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
			_tmp45_ = FALSE;
#line 2508 "autosave-manager.c"
		}
#line 500 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp48_ = _tmp45_;
#line 500 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		if (_tmp48_) {
#line 2514 "autosave-manager.c"
			ScanPageInfo* _tmp49_;
			ScanPageInfo* info;
			ScanPageInfo* _tmp50_;
			gint _tmp51_;
			ScanPageInfo* _tmp52_;
			gint _tmp53_;
			ScanPageInfo* _tmp54_;
			gint _tmp55_;
			ScanPageInfo* _tmp56_;
			gint _tmp57_;
			ScanPageInfo* _tmp58_;
			gint _tmp59_;
			ScanPageInfo* _tmp60_;
			gchar* _tmp61_;
			Page* _tmp62_;
			ScanPageInfo* _tmp63_;
#line 502 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
			_tmp49_ = scan_page_info_new ();
#line 502 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
			info = _tmp49_;
#line 503 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
			_tmp50_ = info;
#line 503 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
			_tmp51_ = width;
#line 503 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
			_tmp50_->width = _tmp51_;
#line 504 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
			_tmp52_ = info;
#line 504 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
			_tmp53_ = height;
#line 504 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
			_tmp52_->height = _tmp53_;
#line 505 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
			_tmp54_ = info;
#line 505 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
			_tmp55_ = depth;
#line 505 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
			_tmp54_->depth = _tmp55_;
#line 506 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
			_tmp56_ = info;
#line 506 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
			_tmp57_ = n_channels;
#line 506 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
			_tmp56_->n_channels = _tmp57_;
#line 507 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
			_tmp58_ = info;
#line 507 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
			_tmp59_ = dpi;
#line 507 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
			_tmp58_->dpi = (gdouble) _tmp59_;
#line 508 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
			_tmp60_ = info;
#line 508 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
			_tmp61_ = g_strdup ("");
#line 508 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
			_g_free0 (_tmp60_->device);
#line 508 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
			_tmp60_->device = _tmp61_;
#line 509 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
			_tmp62_ = new_page;
#line 509 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
			_tmp63_ = info;
#line 509 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
			page_set_page_info (_tmp62_, _tmp63_);
#line 500 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
			_scan_page_info_unref0 (info);
#line 2581 "autosave-manager.c"
		}
#line 512 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp64_ = new_page;
#line 512 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp65_ = stmt;
#line 512 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp66_ = sqlite3_column_text (_tmp65_, 11);
#line 512 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		page_set_color_profile (_tmp64_, _tmp66_);
#line 513 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp67_ = stmt;
#line 513 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp68_ = sqlite3_column_int (_tmp67_, 12);
#line 513 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		crop_x = _tmp68_;
#line 514 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp69_ = stmt;
#line 514 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp70_ = sqlite3_column_int (_tmp69_, 13);
#line 514 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		crop_y = _tmp70_;
#line 515 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp71_ = stmt;
#line 515 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp72_ = sqlite3_column_int (_tmp71_, 14);
#line 515 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		crop_width = _tmp72_;
#line 516 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp73_ = stmt;
#line 516 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp74_ = sqlite3_column_int (_tmp73_, 15);
#line 516 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		crop_height = _tmp74_;
#line 517 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp76_ = crop_width;
#line 517 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		if (_tmp76_ > 0) {
#line 2619 "autosave-manager.c"
			gint _tmp77_;
#line 517 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
			_tmp77_ = crop_height;
#line 517 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
			_tmp75_ = _tmp77_ > 0;
#line 2625 "autosave-manager.c"
		} else {
#line 517 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
			_tmp75_ = FALSE;
#line 2629 "autosave-manager.c"
		}
#line 517 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp78_ = _tmp75_;
#line 517 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		if (_tmp78_) {
#line 2635 "autosave-manager.c"
			Page* _tmp79_;
			gint _tmp80_;
			gint _tmp81_;
			Page* _tmp82_;
			gint _tmp83_;
			gint _tmp84_;
#line 519 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
			_tmp79_ = new_page;
#line 519 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
			_tmp80_ = crop_width;
#line 519 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
			_tmp81_ = crop_height;
#line 519 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
			page_set_custom_crop (_tmp79_, _tmp80_, _tmp81_);
#line 520 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
			_tmp82_ = new_page;
#line 520 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
			_tmp83_ = crop_x;
#line 520 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
			_tmp84_ = crop_y;
#line 520 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
			page_move_crop (_tmp82_, _tmp83_, _tmp84_);
#line 2658 "autosave-manager.c"
		}
#line 523 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp85_ = stmt;
#line 523 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp86_ = sqlite3_column_bytes (_tmp85_, 17);
#line 523 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp87_ = g_new0 (guchar, _tmp86_);
#line 523 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		new_pixels = _tmp87_;
#line 523 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		new_pixels_length1 = _tmp86_;
#line 523 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_new_pixels_size_ = new_pixels_length1;
#line 524 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp88_ = new_pixels;
#line 524 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp88__length1 = new_pixels_length1;
#line 524 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp89_ = stmt;
#line 524 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp90_ = sqlite3_column_blob (_tmp89_, 17);
#line 524 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp91_ = stmt;
#line 524 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp92_ = sqlite3_column_bytes (_tmp91_, 17);
#line 524 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		memcpy (_tmp88_, _tmp90_, (gsize) _tmp92_);
#line 525 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp93_ = new_page;
#line 525 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp94_ = new_pixels;
#line 525 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp94__length1 = new_pixels_length1;
#line 525 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		page_set_pixels (_tmp93_, _tmp94_, _tmp94__length1);
#line 527 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp95_ = stmt;
#line 527 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp96_ = sqlite3_column_int (_tmp95_, 18);
#line 527 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		id = _tmp96_;
#line 528 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		g_debug ("autosave-manager.vala:528: Updating autosave to point to our new copy " \
"of the page");
#line 529 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp97_ = id;
#line 529 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp98_ = g_strdup_printf ("%i", _tmp97_);
#line 529 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp99_ = _tmp98_;
#line 529 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp100_ = g_strconcat ("\n" \
"                UPDATE pages\n" \
"                   SET page_hash=?1,\n" \
"                       book_hash=?2,\n" \
"                       book_revision=?3\n" \
"                WHERE id = ", _tmp99_, "\n            ", NULL);
#line 529 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_g_free0 (query);
#line 529 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		query = _tmp100_;
#line 529 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_g_free0 (_tmp99_);
#line 538 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp101_ = self->priv->database_connection;
#line 538 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp102_ = query;
#line 538 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp104_ = sqlite3_prepare_v2 (_tmp101_, _tmp102_, -1, &_tmp103_, NULL);
#line 538 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_sqlite3_finalize0 (stmt2);
#line 538 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		stmt2 = _tmp103_;
#line 538 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		result2 = _tmp104_;
#line 539 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp105_ = result2;
#line 539 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		if (_tmp105_ != SQLITE_OK) {
#line 2732 "autosave-manager.c"
			gint _tmp106_;
			gchar* _tmp107_ = NULL;
			gchar* _tmp108_;
			gchar* _tmp109_ = NULL;
			gchar* _tmp110_;
#line 540 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
			_tmp106_ = result2;
#line 540 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
			_tmp107_ = g_strdup_printf ("%i", _tmp106_);
#line 540 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
			_tmp108_ = _tmp107_;
#line 540 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
			_tmp109_ = g_strconcat ("Error ", _tmp108_, " while preparing query", NULL);
#line 540 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
			_tmp110_ = _tmp109_;
#line 540 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
			g_warning ("autosave-manager.vala:540: %s", _tmp110_);
#line 540 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
			_g_free0 (_tmp110_);
#line 540 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
			_g_free0 (_tmp108_);
#line 2754 "autosave-manager.c"
		}
#line 541 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp111_ = stmt2;
#line 541 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp112_ = g_direct_hash;
#line 541 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp113_ = new_page;
#line 541 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp114_ = _tmp112_ (_tmp113_);
#line 541 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		sqlite3_bind_int64 (_tmp111_, 1, (gint64) _tmp114_);
#line 542 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp115_ = stmt2;
#line 542 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp116_ = g_direct_hash;
#line 542 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp117_ = *book;
#line 542 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp118_ = _tmp116_ (_tmp117_);
#line 542 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		sqlite3_bind_int64 (_tmp115_, 2, (gint64) _tmp118_);
#line 543 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp119_ = stmt2;
#line 543 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp120_ = self->priv->cur_book_revision;
#line 543 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		sqlite3_bind_int64 (_tmp119_, 3, (gint64) _tmp120_);
#line 545 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp121_ = stmt2;
#line 545 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp122_ = sqlite3_step (_tmp121_);
#line 545 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		result2 = _tmp122_;
#line 546 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp123_ = result2;
#line 546 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		if (_tmp123_ != SQLITE_DONE) {
#line 2792 "autosave-manager.c"
			gint _tmp124_;
#line 547 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
			_tmp124_ = _result_;
#line 547 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
			g_warning ("autosave-manager.vala:547: Error %d while executing query", _tmp124_);
#line 2798 "autosave-manager.c"
		}
#line 479 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_sqlite3_finalize0 (stmt2);
#line 479 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		new_pixels = (g_free (new_pixels), NULL);
#line 479 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_page_unref0 (new_page);
#line 2806 "autosave-manager.c"
	}
#line 550 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp125_ = first;
#line 550 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	if (_tmp125_) {
#line 551 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		g_debug ("autosave-manager.vala:551: No pages found to recover");
#line 2814 "autosave-manager.c"
	}
#line 443 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_g_free0 (query);
#line 443 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_sqlite3_finalize0 (stmt);
#line 2820 "autosave-manager.c"
}


Book* autosave_manager_get_book (AutosaveManager* self) {
	Book* result;
	Book* _tmp0_;
#line 54 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	g_return_val_if_fail (self != NULL, NULL);
#line 56 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp0_ = self->priv->_book;
#line 56 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	result = _tmp0_;
#line 56 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	return result;
#line 2835 "autosave-manager.c"
}


static void _autosave_manager_on_page_added_book_page_added (Book* _sender, Page* page, gpointer self) {
#line 67 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	autosave_manager_on_page_added (self, page);
#line 2842 "autosave-manager.c"
}


static void _autosave_manager_on_page_removed_book_page_removed (Book* _sender, Page* page, gpointer self) {
#line 68 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	autosave_manager_on_page_removed (self, page);
#line 2849 "autosave-manager.c"
}


static void _autosave_manager_on_reordered_book_reordered (Book* _sender, gpointer self) {
#line 69 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	autosave_manager_on_reordered (self);
#line 2856 "autosave-manager.c"
}


static void _autosave_manager_on_cleared_book_cleared (Book* _sender, gpointer self) {
#line 70 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	autosave_manager_on_cleared (self);
#line 2863 "autosave-manager.c"
}


static gpointer _book_ref0 (gpointer self) {
#line 72 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	return self ? book_ref (self) : NULL;
#line 2870 "autosave-manager.c"
}


void autosave_manager_set_book (AutosaveManager* self, Book* value) {
	Book* _tmp0_;
	Book* _tmp19_;
	Book* _tmp20_;
	Book* _tmp21_;
	Book* _tmp22_;
	Book* _tmp23_;
	Book* _tmp24_;
#line 58 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	g_return_if_fail (self != NULL);
#line 60 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp0_ = self->priv->_book;
#line 60 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	if (_tmp0_ != NULL) {
#line 2888 "autosave-manager.c"
		Book* _tmp11_;
		guint _tmp12_ = 0U;
		Book* _tmp13_;
		guint _tmp14_ = 0U;
		Book* _tmp15_;
		guint _tmp16_ = 0U;
		Book* _tmp17_;
		guint _tmp18_ = 0U;
		{
			gint i;
#line 62 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
			i = 0;
#line 2901 "autosave-manager.c"
			{
				gboolean _tmp1_;
#line 62 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				_tmp1_ = TRUE;
#line 62 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				while (TRUE) {
#line 2908 "autosave-manager.c"
					gboolean _tmp2_;
					gint _tmp4_;
					Book* _tmp5_;
					guint _tmp6_ = 0U;
					Book* _tmp7_;
					gint _tmp8_;
					Page* _tmp9_ = NULL;
					Page* page;
					Page* _tmp10_;
#line 62 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
					_tmp2_ = _tmp1_;
#line 62 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
					if (!_tmp2_) {
#line 2922 "autosave-manager.c"
						gint _tmp3_;
#line 62 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
						_tmp3_ = i;
#line 62 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
						i = _tmp3_ + 1;
#line 2928 "autosave-manager.c"
					}
#line 62 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
					_tmp1_ = FALSE;
#line 62 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
					_tmp4_ = i;
#line 62 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
					_tmp5_ = self->priv->_book;
#line 62 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
					_tmp6_ = book_get_n_pages (_tmp5_);
#line 62 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
					if (!(((guint) _tmp4_) < _tmp6_)) {
#line 62 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
						break;
#line 2942 "autosave-manager.c"
					}
#line 64 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
					_tmp7_ = self->priv->_book;
#line 64 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
					_tmp8_ = i;
#line 64 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
					_tmp9_ = book_get_page (_tmp7_, _tmp8_);
#line 64 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
					page = _tmp9_;
#line 65 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
					_tmp10_ = page;
#line 65 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
					autosave_manager_on_page_removed (self, _tmp10_);
#line 62 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
					_page_unref0 (page);
#line 2958 "autosave-manager.c"
				}
			}
		}
#line 67 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp11_ = self->priv->_book;
#line 67 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		g_signal_parse_name ("page-added", TYPE_BOOK, &_tmp12_, NULL, FALSE);
#line 67 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		g_signal_handlers_disconnect_matched (_tmp11_, G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp12_, 0, NULL, (GCallback) _autosave_manager_on_page_added_book_page_added, self);
#line 68 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp13_ = self->priv->_book;
#line 68 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		g_signal_parse_name ("page-removed", TYPE_BOOK, &_tmp14_, NULL, FALSE);
#line 68 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		g_signal_handlers_disconnect_matched (_tmp13_, G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp14_, 0, NULL, (GCallback) _autosave_manager_on_page_removed_book_page_removed, self);
#line 69 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp15_ = self->priv->_book;
#line 69 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		g_signal_parse_name ("reordered", TYPE_BOOK, &_tmp16_, NULL, FALSE);
#line 69 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		g_signal_handlers_disconnect_matched (_tmp15_, G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp16_, 0, NULL, (GCallback) _autosave_manager_on_reordered_book_reordered, self);
#line 70 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		_tmp17_ = self->priv->_book;
#line 70 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		g_signal_parse_name ("cleared", TYPE_BOOK, &_tmp18_, NULL, FALSE);
#line 70 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		g_signal_handlers_disconnect_matched (_tmp17_, G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, _tmp18_, 0, NULL, (GCallback) _autosave_manager_on_cleared_book_cleared, self);
#line 2986 "autosave-manager.c"
	}
#line 72 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp19_ = value;
#line 72 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp20_ = _book_ref0 (_tmp19_);
#line 72 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_book_unref0 (self->priv->_book);
#line 72 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	self->priv->_book = _tmp20_;
#line 73 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp21_ = self->priv->_book;
#line 73 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	g_signal_connect (_tmp21_, "page-added", (GCallback) _autosave_manager_on_page_added_book_page_added, self);
#line 74 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp22_ = self->priv->_book;
#line 74 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	g_signal_connect (_tmp22_, "page-removed", (GCallback) _autosave_manager_on_page_removed_book_page_removed, self);
#line 75 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp23_ = self->priv->_book;
#line 75 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	g_signal_connect (_tmp23_, "reordered", (GCallback) _autosave_manager_on_reordered_book_reordered, self);
#line 76 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp24_ = self->priv->_book;
#line 76 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	g_signal_connect (_tmp24_, "cleared", (GCallback) _autosave_manager_on_cleared_book_cleared, self);
#line 3012 "autosave-manager.c"
	{
		gint i;
#line 77 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		i = 0;
#line 3017 "autosave-manager.c"
		{
			gboolean _tmp25_;
#line 77 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
			_tmp25_ = TRUE;
#line 77 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
			while (TRUE) {
#line 3024 "autosave-manager.c"
				gboolean _tmp26_;
				gint _tmp28_;
				Book* _tmp29_;
				guint _tmp30_ = 0U;
				Book* _tmp31_;
				Book* _tmp32_;
				gint _tmp33_;
				Page* _tmp34_ = NULL;
				Page* page;
				Page* _tmp35_;
#line 77 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				_tmp26_ = _tmp25_;
#line 77 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				if (!_tmp26_) {
#line 3039 "autosave-manager.c"
					gint _tmp27_;
#line 77 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
					_tmp27_ = i;
#line 77 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
					i = _tmp27_ + 1;
#line 3045 "autosave-manager.c"
				}
#line 77 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				_tmp25_ = FALSE;
#line 77 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				_tmp28_ = i;
#line 77 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				_tmp29_ = self->priv->_book;
#line 77 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				_tmp30_ = book_get_n_pages (_tmp29_);
#line 77 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				if (!(((guint) _tmp28_) < _tmp30_)) {
#line 77 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
					break;
#line 3059 "autosave-manager.c"
				}
#line 79 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				_tmp31_ = autosave_manager_get_book (self);
#line 79 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				_tmp32_ = _tmp31_;
#line 79 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				_tmp33_ = i;
#line 79 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				_tmp34_ = book_get_page (_tmp32_, _tmp33_);
#line 79 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				page = _tmp34_;
#line 80 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				_tmp35_ = page;
#line 80 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				autosave_manager_on_page_added (self, _tmp35_);
#line 77 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
				_page_unref0 (page);
#line 3077 "autosave-manager.c"
			}
		}
	}
}


static void value_autosave_manager_init (GValue* value) {
#line 36 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	value->data[0].v_pointer = NULL;
#line 3087 "autosave-manager.c"
}


static void value_autosave_manager_free_value (GValue* value) {
#line 36 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	if (value->data[0].v_pointer) {
#line 36 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		autosave_manager_unref (value->data[0].v_pointer);
#line 3096 "autosave-manager.c"
	}
}


static void value_autosave_manager_copy_value (const GValue* src_value, GValue* dest_value) {
#line 36 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	if (src_value->data[0].v_pointer) {
#line 36 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		dest_value->data[0].v_pointer = autosave_manager_ref (src_value->data[0].v_pointer);
#line 3106 "autosave-manager.c"
	} else {
#line 36 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		dest_value->data[0].v_pointer = NULL;
#line 3110 "autosave-manager.c"
	}
}


static gpointer value_autosave_manager_peek_pointer (const GValue* value) {
#line 36 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	return value->data[0].v_pointer;
#line 3118 "autosave-manager.c"
}


static gchar* value_autosave_manager_collect_value (GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) {
#line 36 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	if (collect_values[0].v_pointer) {
#line 3125 "autosave-manager.c"
		AutosaveManager* object;
		object = collect_values[0].v_pointer;
#line 36 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		if (object->parent_instance.g_class == NULL) {
#line 36 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
			return g_strconcat ("invalid unclassed object pointer for value type `", G_VALUE_TYPE_NAME (value), "'", NULL);
#line 3132 "autosave-manager.c"
		} else if (!g_value_type_compatible (G_TYPE_FROM_INSTANCE (object), G_VALUE_TYPE (value))) {
#line 36 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
			return g_strconcat ("invalid object type `", g_type_name (G_TYPE_FROM_INSTANCE (object)), "' for value type `", G_VALUE_TYPE_NAME (value), "'", NULL);
#line 3136 "autosave-manager.c"
		}
#line 36 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		value->data[0].v_pointer = autosave_manager_ref (object);
#line 3140 "autosave-manager.c"
	} else {
#line 36 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		value->data[0].v_pointer = NULL;
#line 3144 "autosave-manager.c"
	}
#line 36 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	return NULL;
#line 3148 "autosave-manager.c"
}


static gchar* value_autosave_manager_lcopy_value (const GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) {
	AutosaveManager** object_p;
	object_p = collect_values[0].v_pointer;
#line 36 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	if (!object_p) {
#line 36 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		return g_strdup_printf ("value location for `%s' passed as NULL", G_VALUE_TYPE_NAME (value));
#line 3159 "autosave-manager.c"
	}
#line 36 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	if (!value->data[0].v_pointer) {
#line 36 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		*object_p = NULL;
#line 3165 "autosave-manager.c"
	} else if (collect_flags & G_VALUE_NOCOPY_CONTENTS) {
#line 36 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		*object_p = value->data[0].v_pointer;
#line 3169 "autosave-manager.c"
	} else {
#line 36 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		*object_p = autosave_manager_ref (value->data[0].v_pointer);
#line 3173 "autosave-manager.c"
	}
#line 36 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	return NULL;
#line 3177 "autosave-manager.c"
}


GParamSpec* param_spec_autosave_manager (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags) {
	ParamSpecAutosaveManager* spec;
#line 36 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	g_return_val_if_fail (g_type_is_a (object_type, TYPE_AUTOSAVE_MANAGER), NULL);
#line 36 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	spec = g_param_spec_internal (G_TYPE_PARAM_OBJECT, name, nick, blurb, flags);
#line 36 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	G_PARAM_SPEC (spec)->value_type = object_type;
#line 36 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	return G_PARAM_SPEC (spec);
#line 3191 "autosave-manager.c"
}


gpointer value_get_autosave_manager (const GValue* value) {
#line 36 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	g_return_val_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, TYPE_AUTOSAVE_MANAGER), NULL);
#line 36 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	return value->data[0].v_pointer;
#line 3200 "autosave-manager.c"
}


void value_set_autosave_manager (GValue* value, gpointer v_object) {
	AutosaveManager* old;
#line 36 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, TYPE_AUTOSAVE_MANAGER));
#line 36 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	old = value->data[0].v_pointer;
#line 36 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	if (v_object) {
#line 36 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, TYPE_AUTOSAVE_MANAGER));
#line 36 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value)));
#line 36 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		value->data[0].v_pointer = v_object;
#line 36 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		autosave_manager_ref (value->data[0].v_pointer);
#line 3220 "autosave-manager.c"
	} else {
#line 36 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		value->data[0].v_pointer = NULL;
#line 3224 "autosave-manager.c"
	}
#line 36 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	if (old) {
#line 36 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		autosave_manager_unref (old);
#line 3230 "autosave-manager.c"
	}
}


void value_take_autosave_manager (GValue* value, gpointer v_object) {
	AutosaveManager* old;
#line 36 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, TYPE_AUTOSAVE_MANAGER));
#line 36 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	old = value->data[0].v_pointer;
#line 36 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	if (v_object) {
#line 36 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, TYPE_AUTOSAVE_MANAGER));
#line 36 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value)));
#line 36 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		value->data[0].v_pointer = v_object;
#line 3249 "autosave-manager.c"
	} else {
#line 36 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		value->data[0].v_pointer = NULL;
#line 3253 "autosave-manager.c"
	}
#line 36 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	if (old) {
#line 36 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		autosave_manager_unref (old);
#line 3259 "autosave-manager.c"
	}
}


static void autosave_manager_class_init (AutosaveManagerClass * klass) {
	const gchar* _tmp0_ = NULL;
	gchar* _tmp1_ = NULL;
	gchar* _tmp2_;
	gchar* _tmp3_;
	const gchar* _tmp4_;
	const gchar* _tmp5_;
	const gchar* _tmp6_;
	gchar* _tmp7_;
	gchar* _tmp8_;
	gchar* _tmp9_ = NULL;
	pid_t _tmp10_ = 0;
	gchar* _tmp11_ = NULL;
#line 36 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	autosave_manager_parent_class = g_type_class_peek_parent (klass);
#line 36 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	AUTOSAVE_MANAGER_CLASS (klass)->finalize = autosave_manager_finalize;
#line 36 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	g_type_class_add_private (klass, sizeof (AutosaveManagerPrivate));
#line 38 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp0_ = g_get_user_cache_dir ();
#line 38 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp1_ = g_build_filename (_tmp0_, "simple-scan", "autosaves", NULL);
#line 38 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	autosave_manager_AUTOSAVE_DIR = _tmp1_;
#line 39 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp2_ = g_strdup ("autosaves");
#line 39 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	autosave_manager_AUTOSAVE_NAME = _tmp2_;
#line 40 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp3_ = g_strdup (".db");
#line 40 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	autosave_manager_AUTOSAVE_EXT = _tmp3_;
#line 41 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp4_ = autosave_manager_AUTOSAVE_DIR;
#line 41 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp5_ = autosave_manager_AUTOSAVE_NAME;
#line 41 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp6_ = autosave_manager_AUTOSAVE_EXT;
#line 41 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp7_ = g_strconcat (_tmp5_, _tmp6_, NULL);
#line 41 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp8_ = _tmp7_;
#line 41 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp9_ = g_build_filename (_tmp4_, _tmp8_, NULL);
#line 41 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	autosave_manager_AUTOSAVE_FILENAME = _tmp9_;
#line 43 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp10_ = getpid ();
#line 43 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_tmp11_ = g_strdup_printf ("%i", (gint) _tmp10_);
#line 43 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	autosave_manager_PID = _tmp11_;
#line 3317 "autosave-manager.c"
}


static void autosave_manager_instance_init (AutosaveManager * self) {
#line 36 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	self->priv = AUTOSAVE_MANAGER_GET_PRIVATE (self);
#line 47 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	self->priv->_book = NULL;
#line 49 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	self->priv->update_timeout = (guint) 0;
#line 323 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	self->priv->cur_book_revision = 0;
#line 36 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	self->ref_count = 1;
#line 3332 "autosave-manager.c"
}


static void autosave_manager_finalize (AutosaveManager* obj) {
	AutosaveManager * self;
#line 36 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_AUTOSAVE_MANAGER, AutosaveManager);
#line 46 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_sqlite3_close0 (self->priv->database_connection);
#line 47 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_book_unref0 (self->priv->_book);
#line 50 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	_g_hash_table_unref0 (self->priv->dirty_pages);
#line 3346 "autosave-manager.c"
}


GType autosave_manager_get_type (void) {
	static volatile gsize autosave_manager_type_id__volatile = 0;
	if (g_once_init_enter (&autosave_manager_type_id__volatile)) {
		static const GTypeValueTable g_define_type_value_table = { value_autosave_manager_init, value_autosave_manager_free_value, value_autosave_manager_copy_value, value_autosave_manager_peek_pointer, "p", value_autosave_manager_collect_value, "p", value_autosave_manager_lcopy_value };
		static const GTypeInfo g_define_type_info = { sizeof (AutosaveManagerClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) autosave_manager_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (AutosaveManager), 0, (GInstanceInitFunc) autosave_manager_instance_init, &g_define_type_value_table };
		static const GTypeFundamentalInfo g_define_type_fundamental_info = { (G_TYPE_FLAG_CLASSED | G_TYPE_FLAG_INSTANTIATABLE | G_TYPE_FLAG_DERIVABLE | G_TYPE_FLAG_DEEP_DERIVABLE) };
		GType autosave_manager_type_id;
		autosave_manager_type_id = g_type_register_fundamental (g_type_fundamental_next (), "AutosaveManager", &g_define_type_info, &g_define_type_fundamental_info, 0);
		g_once_init_leave (&autosave_manager_type_id__volatile, autosave_manager_type_id);
	}
	return autosave_manager_type_id__volatile;
}


gpointer autosave_manager_ref (gpointer instance) {
	AutosaveManager* self;
	self = instance;
#line 36 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	g_atomic_int_inc (&self->ref_count);
#line 36 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	return instance;
#line 3371 "autosave-manager.c"
}


void autosave_manager_unref (gpointer instance) {
	AutosaveManager* self;
	self = instance;
#line 36 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
	if (g_atomic_int_dec_and_test (&self->ref_count)) {
#line 36 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		AUTOSAVE_MANAGER_GET_CLASS (self)->finalize (self);
#line 36 "/home/bob/bzr/simple-scan/trunk/src/autosave-manager.vala"
		g_type_free_instance ((GTypeInstance *) self);
#line 3384 "autosave-manager.c"
	}
}