Add g_main_context_ref_thread_default()

Add g_main_context_ref_thread_default(), which always returns a
reffed GMainContext, rather than sometimes returning a (non-reffed)
GMainContext, and sometimes returning NULL. This simplifies the
bookkeeping in any code that needs to keep a reference to the
thread-default context for a while.

https://bugzilla.gnome.org/show_bug.cgi?id=660994
This commit is contained in:
Dan Winship
2011-10-05 10:46:57 -04:00
parent d91769b641
commit 59f1f54655
15 changed files with 84 additions and 91 deletions

View File

@@ -69,8 +69,7 @@ g_io_job_free (GIOSchedulerJob *job)
{
if (job->cancellable)
g_object_unref (job->cancellable);
if (job->context)
g_main_context_unref (job->context);
g_main_context_unref (job->context);
g_free (job);
}
@@ -224,9 +223,7 @@ g_io_scheduler_push_job (GIOSchedulerJobFunc job_func,
if (cancellable)
job->cancellable = g_object_ref (cancellable);
job->context = g_main_context_get_thread_default ();
if (job->context)
g_main_context_ref (job->context);
job->context = g_main_context_ref_thread_default ();
G_LOCK (active_jobs);
active_jobs = g_slist_prepend (active_jobs, job);