diff options
author | Marco Pesenti Gritti <marco@src.gnome.org> | 2005-03-23 11:07:32 (GMT) |
---|---|---|
committer | Marco Pesenti Gritti <marco@src.gnome.org> | 2005-03-23 11:07:32 (GMT) |
commit | 1c0d19bd22598eca159c3febdcdaf4168891cb8f (patch) | |
tree | 76cc5403e6c20380228ab3f7718130162fbf864d /shell/ev-print-job.c | |
parent | 730f128d1fb4feb815c8111c9956d1598c655408 (diff) |
merge evince-threads branch
Diffstat (limited to 'shell/ev-print-job.c')
-rw-r--r-- | shell/ev-print-job.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/shell/ev-print-job.c b/shell/ev-print-job.c index 0c66b81..ba283ff 100644 --- a/shell/ev-print-job.c +++ b/shell/ev-print-job.c @@ -224,31 +224,40 @@ ev_print_job_use_print_dialog_settings (EvPrintJob *job, GnomePrintDialog *dialo gnome_print_config_get_page_size (print_config, &job->width, &job->height); gnome_print_config_get_boolean (print_config, - GNOME_PRINT_KEY_DUPLEX, &job->duplex); + (guchar *)GNOME_PRINT_KEY_DUPLEX, &job->duplex); gnome_print_config_unref (print_config); } static gboolean idle_print_handler (EvPrintJob *job) { + EvPageCache *page_cache; + if (!job->printing) { + g_mutex_lock (EV_DOC_MUTEX); ev_ps_exporter_begin (EV_PS_EXPORTER (job->document), job->temp_file); + g_mutex_unlock (EV_DOC_MUTEX); job->next_page = 1; /* FIXME use 0-based page numbering? */ job->printing = TRUE; return TRUE; } - if (job->next_page <= ev_document_get_n_pages (job->document)) { + page_cache = ev_document_get_page_cache (job->document); + if (job->next_page <= ev_page_cache_get_n_pages (page_cache)) { #if 0 g_printerr ("Printing page %d\n", job->next_page); #endif + g_mutex_lock (EV_DOC_MUTEX); ev_ps_exporter_do_page (EV_PS_EXPORTER (job->document), job->next_page); + g_mutex_unlock (EV_DOC_MUTEX); job->next_page++; return TRUE; } else { /* no more pages */ + g_mutex_lock (EV_DOC_MUTEX); ev_ps_exporter_end (EV_PS_EXPORTER (job->document)); + g_mutex_unlock (EV_DOC_MUTEX); close (job->fd); job->fd = 0; |