X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=blobdiff_plain;ds=inline;f=libview%2Fev-jobs.c;h=816a56bbb3c7987351291af6d82f778eb0c41243;hb=690c43bf613d0c69579072f1cffb1898ef0b0856;hp=561a0f98aaf1b179c67b3ba4865c24368ba85378;hpb=1034436d36e173bbfa374c64f94371f0579d6ff6;p=evince.git diff --git a/libview/ev-jobs.c b/libview/ev-jobs.c index 561a0f98..816a56bb 100644 --- a/libview/ev-jobs.c +++ b/libview/ev-jobs.c @@ -216,7 +216,7 @@ ev_job_run (EvJob *job) void ev_job_cancel (EvJob *job) { - if (job->cancelled || (job->finished && job->idle_finished_id == 0)) + if (job->cancelled) return; ev_debug_message (DEBUG_JOBS, "job %s (%p) cancelled", EV_GET_TYPE_NAME (job), job); @@ -225,6 +225,10 @@ ev_job_cancel (EvJob *job) /* This should never be called from a thread */ job->cancelled = TRUE; g_cancellable_cancel (job->cancellable); + + if (job->finished && job->idle_finished_id == 0) + return; + g_signal_emit (job, job_signals[CANCELLED], 0); } @@ -814,7 +818,8 @@ ev_job_thumbnail_run (EvJob *job) g_object_unref (rc); ev_document_doc_mutex_unlock (); - job_thumb->thumbnail = ev_document_misc_get_thumbnail_frame (-1, -1, pixbuf); + if (pixbuf) + job_thumb->thumbnail = ev_document_misc_get_thumbnail_frame (-1, -1, pixbuf); g_object_unref (pixbuf); ev_job_succeeded (job); @@ -1555,6 +1560,9 @@ ev_job_print_run (EvJob *job) ev_document_doc_mutex_unlock (); + if (g_cancellable_is_cancelled (job->cancellable)) + return FALSE; + cr_status = cairo_status (job_print->cr); if (cr_status == CAIRO_STATUS_SUCCESS) { ev_job_succeeded (job);