summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRyan Lortie <desrt@desrt.ca>2012-07-15 12:31:33 -0400
committerRyan Lortie <desrt@desrt.ca>2012-07-15 12:39:34 -0400
commit301f6cdda6e3ca520cbe4bb568c7922f39ff8887 (patch)
tree223627e5e00eaf666628d8d01b91384e73e70fd0
parentc9e5642b2b643b8e75a7fa24d8527c4c956f048b (diff)
downloaddconf-301f6cdda6e3ca520cbe4bb568c7922f39ff8887.tar.gz
engine: bring back origin_tag logic
The GSettings backend still wants to use this and it does us no harm to have it on the engine API (which is only visible internally). Adjust the various consumers of the engine to the new API. Thanks to Rui Matos for reminding me about this...
-rw-r--r--client/dconf-client.c5
-rw-r--r--dbus-1/dconf-dbus-1.c3
-rw-r--r--engine/dconf-engine.c14
-rw-r--r--engine/dconf-engine.h2
-rw-r--r--gsettings/dconfsettingsbackend.c11
-rw-r--r--tests/engine.c1
6 files changed, 22 insertions, 14 deletions
diff --git a/client/dconf-client.c b/client/dconf-client.c
index 7a2a96c..ca84670 100644
--- a/client/dconf-client.c
+++ b/client/dconf-client.c
@@ -164,6 +164,7 @@ dconf_engine_change_notify (DConfEngine *engine,
const gchar *prefix,
const gchar * const *changes,
const gchar * tag,
+ gpointer origin_tag,
gpointer user_data)
{
GWeakRef *weak_ref = user_data;
@@ -332,7 +333,7 @@ dconf_client_write_fast (DConfClient *client,
g_return_val_if_fail (DCONF_IS_CLIENT (client), FALSE);
changeset = dconf_changeset_new_write (key, value);
- success = dconf_engine_change_fast (client->engine, changeset, error);
+ success = dconf_engine_change_fast (client->engine, changeset, NULL, error);
dconf_changeset_unref (changeset);
return success;
@@ -417,7 +418,7 @@ dconf_client_change_fast (DConfClient *client,
{
g_return_val_if_fail (DCONF_IS_CLIENT (client), FALSE);
- return dconf_engine_change_fast (client->engine, changeset, error);
+ return dconf_engine_change_fast (client->engine, changeset, NULL, error);
}
/**
diff --git a/dbus-1/dconf-dbus-1.c b/dbus-1/dconf-dbus-1.c
index bbc8b77..9bf39ff 100644
--- a/dbus-1/dconf-dbus-1.c
+++ b/dbus-1/dconf-dbus-1.c
@@ -43,6 +43,7 @@ dconf_engine_change_notify (DConfEngine *engine,
const gchar *prefix,
const gchar * const *changes,
const gchar *tag,
+ gpointer origin_tag,
gpointer user_data)
{
DConfDBusClient *dcdbc = user_data;
@@ -86,7 +87,7 @@ dconf_dbus_client_write (DConfDBusClient *dcdbc,
gboolean success;
changeset = dconf_changeset_new_write (key, value);
- success = dconf_engine_change_fast (dcdbc->engine, changeset, NULL);
+ success = dconf_engine_change_fast (dcdbc->engine, changeset, NULL, NULL);
dconf_changeset_unref (changeset);
return success;
diff --git a/engine/dconf-engine.c b/engine/dconf-engine.c
index 9c80d9b..b1c0dd3 100644
--- a/engine/dconf-engine.c
+++ b/engine/dconf-engine.c
@@ -729,7 +729,7 @@ dconf_engine_watch_established (DConfEngine *engine,
* We don't know what changed, so we can just say that potentially
* everything changed. This case is very rare, anyway...
*/
- dconf_engine_change_notify (engine, "/", changes, NULL, engine->user_data);
+ dconf_engine_change_notify (engine, "/", changes, NULL, NULL, engine->user_data);
}
dconf_engine_call_handle_free (handle);
@@ -858,13 +858,14 @@ static void dconf_engine_manage_queue (DConfEngine *engine);
static void
dconf_engine_emit_changes (DConfEngine *engine,
- DConfChangeset *changeset)
+ DConfChangeset *changeset,
+ gpointer origin_tag)
{
const gchar *prefix;
const gchar * const *changes;
if (dconf_changeset_describe (changeset, &prefix, &changes, NULL))
- dconf_engine_change_notify (engine, prefix, changes, NULL, engine->user_data);
+ dconf_engine_change_notify (engine, prefix, changes, NULL, origin_tag, engine->user_data);
}
static void
@@ -924,7 +925,7 @@ dconf_engine_change_completed (DConfEngine *engine,
* message as a warning.
*/
g_warning ("failed to commit changes to dconf: %s", error->message);
- dconf_engine_emit_changes (engine, oc->change);
+ dconf_engine_emit_changes (engine, oc->change, NULL);
}
dconf_changeset_unref (oc->change);
@@ -1003,6 +1004,7 @@ dconf_engine_changeset_changes_only_writable_keys (DConfEngine *engine,
gboolean
dconf_engine_change_fast (DConfEngine *engine,
DConfChangeset *changeset,
+ gpointer origin_tag,
GError **error)
{
GList *node;
@@ -1056,7 +1058,7 @@ dconf_engine_change_fast (DConfEngine *engine,
dconf_engine_unlock_queues (engine);
/* Emit the signal after dropping the lock to avoid deadlock on re-entry. */
- dconf_engine_emit_changes (engine, changeset);
+ dconf_engine_emit_changes (engine, changeset, origin_tag);
return TRUE;
}
@@ -1124,7 +1126,7 @@ dconf_engine_handle_dbus_signal (GBusType type,
* Check last_handled to determine if we should ignore it.
*/
if (!engine->last_handled || !g_str_equal (engine->last_handled, tag))
- dconf_engine_change_notify (engine, prefix, changes, tag, engine->user_data);
+ dconf_engine_change_notify (engine, prefix, changes, tag, NULL, engine->user_data);
engines = g_slist_delete_link (engines, engines);
diff --git a/engine/dconf-engine.h b/engine/dconf-engine.h
index 0128f8b..3c65e87 100644
--- a/engine/dconf-engine.h
+++ b/engine/dconf-engine.h
@@ -86,6 +86,7 @@ void dconf_engine_change_notify (DConfEn
const gchar *prefix,
const gchar * const *changes,
const gchar *tag,
+ gpointer origin_tag,
gpointer user_data);
/* These functions are implemented by the engine */
@@ -140,6 +141,7 @@ void dconf_engine_unwatch_fast (DConfEn
G_GNUC_INTERNAL
gboolean dconf_engine_change_fast (DConfEngine *engine,
DConfChangeset *changeset,
+ gpointer origin_tag,
GError **error);
/* Synchronous API: all calls block until completed */
diff --git a/gsettings/dconfsettingsbackend.c b/gsettings/dconfsettingsbackend.c
index 11c123c..1725d16 100644
--- a/gsettings/dconfsettingsbackend.c
+++ b/gsettings/dconfsettingsbackend.c
@@ -63,7 +63,7 @@ dconf_settings_backend_write (GSettingsBackend *backend,
change = dconf_changeset_new ();
dconf_changeset_set (change, key, value);
- success = dconf_engine_change_fast (dcsb->engine, change, NULL);
+ success = dconf_engine_change_fast (dcsb->engine, change, origin_tag, NULL);
dconf_changeset_unref (change);
return success;
@@ -91,7 +91,7 @@ dconf_settings_backend_write_tree (GSettingsBackend *backend,
change= dconf_changeset_new ();
g_tree_foreach (tree, dconf_settings_backend_add_to_changeset, change);
- success = dconf_engine_change_fast (dcsb->engine, change, NULL);
+ success = dconf_engine_change_fast (dcsb->engine, change, origin_tag, NULL);
dconf_changeset_unref (change);
return success;
@@ -213,6 +213,7 @@ dconf_engine_change_notify (DConfEngine *engine,
const gchar *prefix,
const gchar * const *changes,
const gchar *tag,
+ gpointer origin_tag,
gpointer user_data)
{
GWeakRef *weak_ref = user_data;
@@ -229,10 +230,10 @@ dconf_engine_change_notify (DConfEngine *engine,
if (changes[1] == NULL)
{
if (g_str_has_suffix (prefix, "/"))
- g_settings_backend_path_changed (G_SETTINGS_BACKEND (dcsb), prefix, NULL);
+ g_settings_backend_path_changed (G_SETTINGS_BACKEND (dcsb), prefix, origin_tag);
else
- g_settings_backend_changed (G_SETTINGS_BACKEND (dcsb), prefix, NULL);
+ g_settings_backend_changed (G_SETTINGS_BACKEND (dcsb), prefix, origin_tag);
}
else
- g_settings_backend_keys_changed (G_SETTINGS_BACKEND (dcsb), prefix, changes, NULL);
+ g_settings_backend_keys_changed (G_SETTINGS_BACKEND (dcsb), prefix, changes, origin_tag);
}
diff --git a/tests/engine.c b/tests/engine.c
index 37a3e0f..7e4ea9c 100644
--- a/tests/engine.c
+++ b/tests/engine.c
@@ -37,6 +37,7 @@ dconf_engine_change_notify (DConfEngine *engine,
const gchar *prefix,
const gchar * const *changes,
const gchar *tag,
+ gpointer origin_tag,
gpointer user_data)
{
/* ignore */