X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=blobdiff_plain;f=shell%2Fev-print-job.c;h=70f92fd53bfa9e6d859d8510fa20209637595bdf;hb=cd2d70e467e418c1a63e703f3e06df3cb2e92b87;hp=0c66b81a2e175d1e67ad29352f14828e555a90c9;hpb=fed5ac607fbe74668f1b74c2022ef56b5ee25d61;p=evince.git diff --git a/shell/ev-print-job.c b/shell/ev-print-job.c index 0c66b81a..70f92fd5 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) { + ev_document_doc_mutex_lock (); ev_ps_exporter_begin (EV_PS_EXPORTER (job->document), job->temp_file); - job->next_page = 1; /* FIXME use 0-based page numbering? */ + ev_document_doc_mutex_unlock (); + job->next_page = 0; 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 + ev_document_doc_mutex_lock (); ev_ps_exporter_do_page (EV_PS_EXPORTER (job->document), job->next_page); + ev_document_doc_mutex_unlock (); job->next_page++; return TRUE; } else { /* no more pages */ + ev_document_doc_mutex_lock (); ev_ps_exporter_end (EV_PS_EXPORTER (job->document)); + ev_document_doc_mutex_unlock (); close (job->fd); job->fd = 0;