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);
/* 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);
}
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);