[dconf] dconf engine: fix multi-threading issue
- From: Ryan Lortie <ryanl src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [dconf] dconf engine: fix multi-threading issue
- Date: Thu, 3 Feb 2011 22:15:08 +0000 (UTC)
commit cf0eb5cce184198b2b3394bb30936ae58d649339
Author: Ryan Lortie <desrt desrt ca>
Date: Thu Feb 3 17:13:01 2011 -0500
dconf engine: fix multi-threading issue
Some weird issues have been popping up due to the multi-threaded nature
of GSettings making use of the dconf engine. This patch tries to fix
that.
Closes #640611
engine/dconf-engine.c | 10 ++++++++--
1 files changed, 8 insertions(+), 2 deletions(-)
---
diff --git a/engine/dconf-engine.c b/engine/dconf-engine.c
index 2a3ccbd..86cc9cc 100644
--- a/engine/dconf-engine.c
+++ b/engine/dconf-engine.c
@@ -238,8 +238,14 @@ dconf_engine_refresh_system (DConfEngine *engine)
static void
dconf_engine_refresh (DConfEngine *engine)
{
+ static GStaticMutex lock;
+
+ g_static_mutex_lock (&lock);
+
dconf_engine_refresh_system (engine);
dconf_engine_refresh_user (engine);
+
+ g_static_mutex_unlock (&lock);
}
guint64
@@ -421,7 +427,7 @@ dconf_engine_read_default (DConfEngine *engine,
GVariant *value = NULL;
gint i;
- dconf_engine_refresh_system (engine);
+ dconf_engine_refresh (engine);
for (i = 1; i < engine->n_dbs && value == NULL; i++)
value = gvdb_table_get_value (engine->gvdbs[i], key);
@@ -435,7 +441,7 @@ dconf_engine_read_no_default (DConfEngine *engine,
{
GVariant *value = NULL;
- dconf_engine_refresh_user (engine);
+ dconf_engine_refresh (engine);
if (engine->gvdbs[0])
value = gvdb_table_get_value (engine->gvdbs[0], key);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]