Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/shell/ev-jobs.h
diff options
context:
space:
mode:
authorCarlos Garcia Campos <carlosgc@gnome.org>2007-09-04 15:25:46 (GMT)
committer Carlos Garcia Campos <carlosgc@src.gnome.org>2007-09-04 15:25:46 (GMT)
commitc8c1c1382641f6d97e7dabc4d3bec6ea88103947 (patch)
tree2ad4aceca305bdef0b6dbed7ec82ae9303cacedb /shell/ev-jobs.h
parent1ee7fd467a6bcd1edefd6fedf4b0dd7e41d8125b (diff)
Move save a copy task to its own job so that it's carried out in a thread
2007-09-04 Carlos Garcia Campos <carlosgc@gnome.org> * shell/ev-job-queue.c: (handle_job), (search_for_jobs_unlocked), (no_jobs_available_unlocked), (ev_job_queue_init), (find_queue), (ev_job_queue_remove_job): * shell/ev-jobs.[ch]: (ev_job_save_init), (ev_job_save_dispose), (ev_job_save_class_init), (ev_job_save_new), (ev_job_save_run): * shell/ev-window.c: (ev_window_clear_save_job), (ev_window_save_job_cb), (file_save_dialog_response_cb), (ev_window_dispose): Move save a copy task to its own job so that it's carried out in a thread avoiding another lock in the main thread. Use ev_xfer_uri_simple() instead of gnome_vfs_move() so that document can be saved to a pathin another file system. Fixes bug #456891. svn path=/trunk/; revision=2664
Diffstat (limited to 'shell/ev-jobs.h')
-rw-r--r--shell/ev-jobs.h37
1 files changed, 33 insertions, 4 deletions
diff --git a/shell/ev-jobs.h b/shell/ev-jobs.h
index 084ed6c..6a35c83 100644
--- a/shell/ev-jobs.h
+++ b/shell/ev-jobs.h
@@ -45,6 +45,9 @@ typedef struct _EvJobFontsClass EvJobFontsClass;
typedef struct _EvJobLoad EvJobLoad;
typedef struct _EvJobLoadClass EvJobLoadClass;
+typedef struct _EvJobSave EvJobSave;
+typedef struct _EvJobSaveClass EvJobSaveClass;
+
typedef struct _EvJobPrint EvJobPrint;
typedef struct _EvJobPrintClass EvJobPrintClass;
@@ -78,10 +81,15 @@ typedef struct _EvJobPrintClass EvJobPrintClass;
#define EV_JOB_LOAD_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), EV_TYPE_JOB_LOAD, EvJobLoadClass))
#define EV_IS_JOB_LOAD(object) (G_TYPE_CHECK_INSTANCE_TYPE((object), EV_TYPE_JOB_LOAD))
-#define EV_TYPE_JOB_PRINT (ev_job_print_get_type())
-#define EV_JOB_PRINT(object) (G_TYPE_CHECK_INSTANCE_CAST((object), EV_TYPE_JOB_PRINT, EvJobPrint))
-#define EV_JOB_PRINT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), EV_TYPE_JOB_PRINT, EvJobPrintClass))
-#define EV_IS_JOB_PRINT(object) (G_TYPE_CHECK_INSTANCE_TYPE((object), EV_TYPE_JOB_PRINT))
+#define EV_TYPE_JOB_SAVE (ev_job_save_get_type())
+#define EV_JOB_SAVE(object) (G_TYPE_CHECK_INSTANCE_CAST((object), EV_TYPE_JOB_SAVE, EvJobSave))
+#define EV_JOB_SAVE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), EV_TYPE_JOB_SAVE, EvJobSaveClass))
+#define EV_IS_JOB_SAVE(object) (G_TYPE_CHECK_INSTANCE_TYPE((object), EV_TYPE_JOB_SAVE))
+
+#define EV_TYPE_JOB_PRINT (ev_job_print_get_type())
+#define EV_JOB_PRINT(object) (G_TYPE_CHECK_INSTANCE_CAST((object), EV_TYPE_JOB_PRINT, EvJobPrint))
+#define EV_JOB_PRINT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), EV_TYPE_JOB_PRINT, EvJobPrintClass))
+#define EV_IS_JOB_PRINT(object) (G_TYPE_CHECK_INSTANCE_TYPE((object), EV_TYPE_JOB_PRINT))
typedef enum {
EV_JOB_PRIORITY_LOW,
@@ -190,6 +198,20 @@ struct _EvJobLoadClass
EvJobClass parent_class;
};
+struct _EvJobSave
+{
+ EvJob parent;
+
+ GError *error;
+ gchar *uri;
+ gchar *document_uri;
+};
+
+struct _EvJobSaveClass
+{
+ EvJobClass parent_class;
+};
+
struct _EvJobPrint
{
EvJob parent;
@@ -259,6 +281,13 @@ void ev_job_load_set_uri (EvJobLoad *load,
const gchar *uri);
void ev_job_load_run (EvJobLoad *load);
+/* EvJobSave */
+GType ev_job_save_get_type (void) G_GNUC_CONST;
+EvJob *ev_job_save_new (EvDocument *document,
+ const gchar *uri,
+ const gchar *document_uri);
+void ev_job_save_run (EvJobSave *save);
+
/* EvJobPrint */
GType ev_job_print_get_type (void) G_GNUC_CONST;
EvJob *ev_job_print_new (EvDocument *document,