[dconf] Stop using deprecated GLib APIs



commit 8bd03b799e6efa97bf4df2cc5093f5d3e9964c28
Author: Ryan Lortie <desrt desrt ca>
Date:   Wed Oct 19 17:35:00 2011 -0400

    Stop using deprecated GLib APIs

 engine/dconf-engine.c            |   22 +++++++++++-----------
 gsettings/dconfcontext.c         |    6 ++----
 gsettings/dconfsettingsbackend.c |   37 ++++++++++++++++++-------------------
 3 files changed, 31 insertions(+), 34 deletions(-)
---
diff --git a/engine/dconf-engine.c b/engine/dconf-engine.c
index b83954d..13ccd29 100644
--- a/engine/dconf-engine.c
+++ b/engine/dconf-engine.c
@@ -73,7 +73,7 @@ dconf_engine_get_session_dir (void)
 
 struct _DConfEngine
 {
-  GStaticMutex lock;
+  GMutex      lock;
   guint64     state;
 
   guint8     *shm;
@@ -202,12 +202,12 @@ dconf_engine_get_state (DConfEngine *engine)
 {
   guint64 state;
 
-  g_static_mutex_lock (&engine->lock);
+  g_mutex_lock (&engine->lock);
 
   dconf_engine_refresh (engine);
   state = engine->state;
 
-  g_static_mutex_unlock (&engine->lock);
+  g_mutex_unlock (&engine->lock);
 
   return state;
 }
@@ -280,7 +280,7 @@ dconf_engine_new (const gchar *profile)
   gint i;
 
   engine = g_slice_new (DConfEngine);
-  g_static_mutex_init (&engine->lock);
+  g_mutex_init (&engine->lock);
   engine->shm = NULL;
 
   if (profile == NULL)
@@ -355,7 +355,7 @@ dconf_engine_free (DConfEngine *engine)
       munmap (engine->shm, 1);
     }
 
-  g_static_mutex_free (&engine->lock);
+  g_mutex_clear (&engine->lock);
 
   g_free (engine->object_paths);
   g_free (engine->bus_types);
@@ -377,7 +377,7 @@ dconf_engine_read_internal (DConfEngine  *engine,
   gint limit;
   gint i;
 
-  g_static_mutex_lock (&engine->lock);
+  g_mutex_lock (&engine->lock);
 
   dconf_engine_refresh (engine);
 
@@ -409,7 +409,7 @@ dconf_engine_read_internal (DConfEngine  *engine,
       i++;
     }
 
-  g_static_mutex_unlock (&engine->lock);
+  g_mutex_unlock (&engine->lock);
 
   return value;
 }
@@ -497,7 +497,7 @@ dconf_engine_is_writable (DConfEngine *engine,
     {
       gint i;
 
-      g_static_mutex_lock (&engine->lock);
+      g_mutex_lock (&engine->lock);
 
       dconf_engine_refresh_system (engine);
 
@@ -510,7 +510,7 @@ dconf_engine_is_writable (DConfEngine *engine,
             break;
           }
 
-      g_static_mutex_unlock (&engine->lock);
+      g_mutex_unlock (&engine->lock);
     }
 
   return writable;
@@ -645,7 +645,7 @@ dconf_engine_list (DConfEngine    *engine,
   /* not yet supported */
   g_assert (resets == NULL);
 
-  g_static_mutex_lock (&engine->lock);
+  g_mutex_lock (&engine->lock);
 
   dconf_engine_refresh (engine);
 
@@ -660,7 +660,7 @@ dconf_engine_list (DConfEngine    *engine,
   if (length)
     *length = g_strv_length (list);
 
-  g_static_mutex_unlock (&engine->lock);
+  g_mutex_unlock (&engine->lock);
 
   return list;
 }
diff --git a/gsettings/dconfcontext.c b/gsettings/dconfcontext.c
index 339507e..5e11980 100644
--- a/gsettings/dconfcontext.c
+++ b/gsettings/dconfcontext.c
@@ -24,10 +24,8 @@ dconf_context_get (void)
       GThread *thread;
 
       context = g_main_context_new ();
-      thread = g_thread_create (dconf_context_thread,
-                                context, FALSE, NULL);
-      g_assert (thread != NULL);
-
+      thread = g_thread_new ("dconf worker", dconf_context_thread, context);
+      g_thread_unref (thread);
       g_once_init_leave (&initialised, 1);
     }
 
diff --git a/gsettings/dconfsettingsbackend.c b/gsettings/dconfsettingsbackend.c
index dc035ab..cdf0550 100644
--- a/gsettings/dconfsettingsbackend.c
+++ b/gsettings/dconfsettingsbackend.c
@@ -44,8 +44,9 @@ typedef struct
   gchar *anti_expose_tag;
 
   DConfEngine *engine;
-  GStaticMutex lock;
-  GCond *sync_cond;
+  GMutex lock;
+  GCond sync_cond;
+  gint sync_waiters;
 } DConfSettingsBackend;
 
 static GType dconf_settings_backend_get_type (void);
@@ -252,7 +253,7 @@ dconf_settings_backend_outstanding_returned (GObject      *source,
 
   /* One way or another we no longer need this hooked into the list.
    */
-  g_static_mutex_lock (&dcsb->lock);
+  g_mutex_lock (&dcsb->lock);
   {
     Outstanding **tmp;
 
@@ -263,10 +264,10 @@ dconf_settings_backend_outstanding_returned (GObject      *source,
           break;
         }
 
-    if (dcsb->outstanding == NULL && dcsb->sync_cond)
-      g_cond_broadcast (dcsb->sync_cond);
+    if (dcsb->outstanding == NULL && dcsb->sync_waiters)
+      g_cond_broadcast (&dcsb->sync_cond);
   }
-  g_static_mutex_unlock (&dcsb->lock);
+  g_mutex_unlock (&dcsb->lock);
 
   reply = dconf_settings_backend_send_finish (source, result);
 
@@ -346,10 +347,10 @@ dconf_settings_backend_queue (DConfSettingsBackend *dcsb,
   outstanding->set_value = set_value ? g_variant_ref_sink (set_value) : NULL;
   outstanding->tree = tree ? g_tree_ref (tree) : NULL;
 
-  g_static_mutex_lock (&dcsb->lock);
+  g_mutex_lock (&dcsb->lock);
   outstanding->next = dcsb->outstanding;
   dcsb->outstanding = outstanding;
-  g_static_mutex_unlock (&dcsb->lock);
+  g_mutex_unlock (&dcsb->lock);
 
   g_main_context_invoke (dconf_context_get (),
                          dconf_settings_backend_send_outstanding,
@@ -393,7 +394,7 @@ dconf_settings_backend_scan_outstanding (DConfSettingsBackend  *backend,
   if G_LIKELY (backend->outstanding == NULL)
     return FALSE;
 
-  g_static_mutex_lock (&backend->lock);
+  g_mutex_lock (&backend->lock);
 
   for (node = backend->outstanding; node; node = node->next)
     {
@@ -429,7 +430,7 @@ dconf_settings_backend_scan_outstanding (DConfSettingsBackend  *backend,
         }
     }
 
-  g_static_mutex_unlock (&backend->lock);
+  g_mutex_unlock (&backend->lock);
 
   return found;
 }
@@ -645,24 +646,22 @@ dconf_settings_backend_sync (GSettingsBackend *backend)
   if (!dcsb->outstanding)
     return;
 
-  g_static_mutex_lock (&dcsb->lock);
-
-  g_assert (dcsb->sync_cond == NULL);
-  dcsb->sync_cond = g_cond_new ();
+  g_mutex_lock (&dcsb->lock);
 
+  dcsb->sync_waiters++;
   while (dcsb->outstanding)
-    g_cond_wait (dcsb->sync_cond, g_static_mutex_get_mutex (&dcsb->lock));
-
-  g_cond_free (dcsb->sync_cond);
-  dcsb->sync_cond = NULL;
+    g_cond_wait (&dcsb->sync_cond, &dcsb->lock);
+  dcsb->sync_waiters--;
 
-  g_static_mutex_unlock (&dcsb->lock);
+  g_mutex_unlock (&dcsb->lock);
 }
 
 static void
 dconf_settings_backend_init (DConfSettingsBackend *dcsb)
 {
   dcsb->engine = dconf_engine_new (NULL);
+  g_mutex_init (&dcsb->lock);
+  g_cond_init (&dcsb->sync_cond);
 }
 
 static void



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]