void xsettings_initialize (struct x_display_info *dpyinfo) { if (first_dpyinfo == NULL) first_dpyinfo = dpyinfo; init_gconf (); init_xsettings (dpyinfo); init_gsettings (); }
static void soup_proxy_resolver_gnome_init (SoupProxyResolverGNOME *resolver_gnome) { GMainContext *default_context; G_LOCK (resolver_gnome); if (!gconf_client) { /* GConf is not thread-safe, and we might be running * in some random thread right now while other * GConf-related activity is going on in the main * thread. To prevent badness, we try to claim the * default GMainContext; if we succeed, then either * we're in the thread of the default GMainContext, or * else there isn't currently any thread running the * default GMainContext (meaning either the main loop * hasn't been started yet, or else there is no main * loop). Either way, it's safe to use GConf. * * If we can't manage to acquire the default * GMainContext, then that means another thread * already has it, so we use g_idle_add() to ask that * thread to do the GConf initialization, and wait * for that thread to finish. */ default_context = g_main_context_default (); if (g_main_context_acquire (default_context)) { init_gconf (NULL); g_main_context_release (default_context); } else { SoupProxyResolverGNOMEInitData id; id.lock = g_mutex_new (); id.cond = g_cond_new (); g_mutex_lock (id.lock); g_idle_add (init_gconf, &id); g_cond_wait (id.cond, id.lock); g_mutex_unlock (id.lock); g_cond_free (id.cond); g_mutex_free (id.lock); } } G_UNLOCK(resolver_gnome); }