summaryrefslogtreecommitdiff
path: root/gsettings
diff options
context:
space:
mode:
authorRyan Lortie <desrt@desrt.ca>2011-10-19 17:35:00 -0400
committerRyan Lortie <desrt@desrt.ca>2011-10-19 17:35:00 -0400
commit8bd03b799e6efa97bf4df2cc5093f5d3e9964c28 (patch)
treef78af96ee79d1978ca85d472cfecb42b95389cd5 /gsettings
parentbc00b1f7101e5fa4e70d97c077fe45304eb3ab98 (diff)
downloaddconf-8bd03b799e6efa97bf4df2cc5093f5d3e9964c28.tar.gz
Stop using deprecated GLib APIs
Diffstat (limited to 'gsettings')
-rw-r--r--gsettings/dconfcontext.c6
-rw-r--r--gsettings/dconfsettingsbackend.c37
2 files changed, 20 insertions, 23 deletions
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