static void job_destroy (gpointer data) { GIOSchedulerJob *job = data; if (job->destroy_notify) job->destroy_notify (job->data); remove_active_job (job); g_io_job_free (job); }
static gboolean run_job_at_idle (gpointer data) { GIOSchedulerJob *job = data; gboolean result; if (job->cancellable) g_cancellable_push_current (job->cancellable); result = job->job_func (job, job->cancellable, job->data); if (job->cancellable) g_cancellable_pop_current (job->cancellable); return result; }
static void io_job_thread (GTask *task, gpointer source_object, gpointer task_data, GCancellable *cancellable) { GIOSchedulerJob *job = task_data; gboolean result; if (job->cancellable) g_cancellable_push_current (job->cancellable); do { result = job->job_func (job, job->cancellable, job->data); } while (result); if (job->cancellable) g_cancellable_pop_current (job->cancellable); }
static void io_job_thread (gpointer data, gpointer user_data) { GIOSchedulerJob *job = data; gboolean result; if (job->cancellable) g_cancellable_push_current (job->cancellable); do { result = job->job_func (job, job->cancellable, job->data); } while (result); if (job->cancellable) g_cancellable_pop_current (job->cancellable); job_destroy (job); }