diff options
author | Carlos 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) |
commit | c8c1c1382641f6d97e7dabc4d3bec6ea88103947 (patch) | |
tree | 2ad4aceca305bdef0b6dbed7ec82ae9303cacedb /shell/ev-jobs.h | |
parent | 1ee7fd467a6bcd1edefd6fedf4b0dd7e41d8125b (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.h | 37 |
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, |