summaryrefslogtreecommitdiff
path: root/gsettings
diff options
context:
space:
mode:
authorRyan Lortie <desrt@desrt.ca>2011-08-15 10:38:10 -0400
committerRyan Lortie <desrt@desrt.ca>2011-08-15 10:39:21 -0400
commit8f9f2b5ebd55164985c8330d33d0f8269da4a1c8 (patch)
tree99e87950bad66144ede6d7100853bde0130d7cd7 /gsettings
parentdc91211250e16d5067090fad368c04ae0b674c3c (diff)
downloaddconf-8f9f2b5ebd55164985c8330d33d0f8269da4a1c8.tar.gz
GSettings: g_warning() on failure to communicate
When we have a failure to deliver requests to the dconf backend, give a g_warning(). https://bugzilla.gnome.org/show_bug.cgi?id=641768
Diffstat (limited to 'gsettings')
-rw-r--r--gsettings/dconfsettingsbackend.c37
1 files changed, 32 insertions, 5 deletions
diff --git a/gsettings/dconfsettingsbackend.c b/gsettings/dconfsettingsbackend.c
index 1e141f8..a20225b 100644
--- a/gsettings/dconfsettingsbackend.c
+++ b/gsettings/dconfsettingsbackend.c
@@ -132,13 +132,15 @@ dconf_settings_backend_send (DConfSettingsBackend *dcsb,
for (i = 0; i < dcem->n_messages; i++)
{
+ GError *error = NULL;
+
switch (dcem->bus_types[i])
{
case 'e':
if (dcsb->session_bus == NULL && callback)
{
dcsb->session_bus =
- g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, NULL);
+ g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, &error);
if (dcsb->session_bus != NULL)
dcsb->session_subscription =
@@ -156,7 +158,7 @@ dconf_settings_backend_send (DConfSettingsBackend *dcsb,
if (dcsb->system_bus == NULL && callback)
{
dcsb->system_bus =
- g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, NULL);
+ g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, &error);
if (dcsb->system_bus != NULL)
dcsb->system_subscription =
@@ -175,7 +177,14 @@ dconf_settings_backend_send (DConfSettingsBackend *dcsb,
}
if (connection == NULL && callback != NULL)
- callback (NULL, NULL, user_data);
+ {
+ g_assert (error != NULL);
+
+ g_warning ("%s", error->message);
+ g_error_free (error);
+
+ callback (NULL, NULL, user_data);
+ }
if (connection != NULL)
g_dbus_connection_call (connection,
@@ -193,11 +202,29 @@ static GVariant *
dconf_settings_backend_send_finish (GObject *source,
GAsyncResult *result)
{
+ GError *error = NULL;
+ GVariant *reply;
+
if (source == NULL)
return NULL;
- return g_dbus_connection_call_finish (G_DBUS_CONNECTION (source),
- result, NULL);
+ reply = g_dbus_connection_call_finish (G_DBUS_CONNECTION (source),
+ result, &error);
+
+ if (reply == NULL)
+ {
+ /* This should only be hit in the case that something is seriously
+ * wrong with the installation (ie: the service can't be started,
+ * etc). Bug #641768 requests some notification of these kinds of
+ * situations in the context of the gsettings(1) commandline tool,
+ * so a g_warning() is appropriate here.
+ */
+
+ g_warning ("%s", error->message);
+ g_error_free (error);
+ }
+
+ return reply;
}
struct _Outstanding