X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=blobdiff_plain;f=libview%2Fev-job-scheduler.c;h=85e5adda30ce5f5d295dc40c60322298b689bddf;hb=3128a9b34c8f2d7fd3894e2e478ed824418b1d27;hp=2537c321869e24f649d53cd52c144360210e08f9;hpb=19a00ed1cd086dcca4b6bfeb84e0b1488b2e3089;p=evince.git diff --git a/libview/ev-job-scheduler.c b/libview/ev-job-scheduler.c index 2537c321..85e5adda 100644 --- a/libview/ev-job-scheduler.c +++ b/libview/ev-job-scheduler.c @@ -30,6 +30,8 @@ typedef struct _EvSchedulerJob { G_LOCK_DEFINE_STATIC(job_list); static GSList *job_list = NULL; +static volatile EvJob *running_job = NULL; + static gpointer ev_job_thread_proxy (gpointer data); static void ev_scheduler_thread_job_cancelled (EvSchedulerJob *job, GCancellable *cancellable); @@ -179,9 +181,13 @@ ev_job_thread (EvJob *job) do { if (g_cancellable_is_cancelled (job->cancellable)) result = FALSE; - else + else { + g_atomic_pointer_set (&running_job, job); result = ev_job_run (job); + } } while (result); + + g_atomic_pointer_set (&running_job, NULL); } static gboolean @@ -303,3 +309,8 @@ ev_job_scheduler_update_job (EvJob *job, } } +EvJob * +ev_job_scheduler_get_running_thread_job (void) +{ + return g_atomic_pointer_get (&running_job); +}