diff options
author | Giovanni Campagna <gcampagna@src.gnome.org> | 2012-05-03 17:54:59 +0200 |
---|---|---|
committer | Ray Strode <rstrode@redhat.com> | 2012-07-17 03:38:10 -0400 |
commit | 20cf9b2302fbdf94e5322b0bb1521c9437cd7087 (patch) | |
tree | 77437dc1e4cbed5e82b507bf69d1e43ff7e5b841 /common/gdm-settings-client.c | |
parent | 560e530559810154189b3aa4a496e2b2330f7d7f (diff) | |
download | gdm-20cf9b2302fbdf94e5322b0bb1521c9437cd7087.tar.gz |
common: Use GDBus for GdmSettings
GdmSettings is a system bus service provided by
GDM so that greeters can read custom.conf without
parsing the file themselves.
This commit changes GdmSettings to use gdbus instead
of dbus-glib.
https://bugzilla.gnome.org/show_bug.cgi?id=622888
Diffstat (limited to 'common/gdm-settings-client.c')
-rw-r--r-- | common/gdm-settings-client.c | 107 |
1 files changed, 35 insertions, 72 deletions
diff --git a/common/gdm-settings-client.c b/common/gdm-settings-client.c index 70a79997..22fb2f41 100644 --- a/common/gdm-settings-client.c +++ b/common/gdm-settings-client.c @@ -29,17 +29,15 @@ #include <sys/stat.h> #include <sys/types.h> -#define DBUS_API_SUBJECT_TO_CHANGE -#include <dbus/dbus-glib.h> -#include <dbus/dbus-glib-lowlevel.h> - #include <glib.h> #include <glib/gi18n.h> #include <glib/gstdio.h> #include <glib-object.h> +#include <gio/gio.h> #include "gdm-settings-client.h" #include "gdm-settings-utils.h" +#include "gdm-settings-glue.h" #define SETTINGS_DBUS_NAME "org.gnome.DisplayManager" #define SETTINGS_DBUS_PATH "/org/gnome/DisplayManager/Settings" @@ -47,8 +45,7 @@ static GHashTable *notifiers = NULL; static GHashTable *schemas = NULL; -static DBusGProxy *settings_proxy = NULL; -static DBusGConnection *connection = NULL; +static GdmDBusSettings *settings_proxy = NULL; static guint32 id_serial = 0; typedef struct { @@ -94,27 +91,19 @@ set_value (const char *key, /* FIXME: check cache */ - g_debug ("Setting %s=%s", key, value); error = NULL; - res = dbus_g_proxy_call (settings_proxy, - "SetValue", - &error, - G_TYPE_STRING, key, - G_TYPE_STRING, value, - G_TYPE_INVALID, - G_TYPE_INVALID); - if (! res) { - if (error != NULL) { - /*g_debug ("Failed to get value for %s: %s", key, error->message);*/ - g_error_free (error); - } else { - /*g_debug ("Failed to get value for %s", key);*/ - } - return FALSE; + res = gdm_dbus_settings_call_set_value_sync (settings_proxy, + key, + value, + NULL, + &error); + if (! res) { + g_debug ("Failed to set value for %s: %s", key, error->message); + g_error_free (error); } - return TRUE; + return res; } static gboolean @@ -122,37 +111,23 @@ get_value (const char *key, char **value) { GError *error; - char *str; gboolean res; /* FIXME: check cache */ error = NULL; - res = dbus_g_proxy_call (settings_proxy, - "GetValue", - &error, - G_TYPE_STRING, key, - G_TYPE_INVALID, - G_TYPE_STRING, &str, - G_TYPE_INVALID); - if (! res) { - if (error != NULL) { - /*g_debug ("Failed to get value for %s: %s", key, error->message);*/ - g_error_free (error); - } else { - /*g_debug ("Failed to get value for %s", key);*/ - } - - return FALSE; - } - if (value != NULL) { - *value = g_strdup (str); + res = gdm_dbus_settings_call_get_value_sync (settings_proxy, + key, + value, + NULL, + &error); + if (! res) { + g_debug ("Failed to get value for %s: %s", key, error->message); + g_error_free (error); } - g_free (str); - - return TRUE; + return res; } static void @@ -467,11 +442,11 @@ send_notification (gpointer key, } static void -on_value_changed (DBusGProxy *proxy, - const char *key, - const char *old_value, - const char *new_value, - gpointer data) +on_value_changed (GdmDBusSettings *proxy, + const char *key, + const char *old_value, + const char *new_value, + gpointer data) { GdmSettingsEntry *entry; @@ -502,21 +477,16 @@ gdm_settings_client_init (const char *file, g_assert (schemas == NULL); error = NULL; - connection = dbus_g_bus_get (DBUS_BUS_SYSTEM, &error); - if (connection == NULL) { - if (error != NULL) { - g_warning ("error getting system bus: %s", error->message); - g_error_free (error); - } - return FALSE; - } - settings_proxy = dbus_g_proxy_new_for_name (connection, - SETTINGS_DBUS_NAME, - SETTINGS_DBUS_PATH, - SETTINGS_DBUS_INTERFACE); + settings_proxy = GDM_DBUS_SETTINGS (gdm_dbus_settings_proxy_new_for_bus_sync (G_BUS_TYPE_SYSTEM, + G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES, + SETTINGS_DBUS_NAME, + SETTINGS_DBUS_PATH, + NULL, + &error)); if (settings_proxy == NULL) { - g_warning ("Unable to connect to settings server"); + g_warning ("Unable to connect to settings server: %s", error->message); + g_error_free (error); return FALSE; } @@ -532,14 +502,7 @@ gdm_settings_client_init (const char *file, schemas = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, (GDestroyNotify)gdm_settings_entry_free); g_slist_foreach (list, (GFunc)hashify_list, NULL); - dbus_g_proxy_add_signal (settings_proxy, "ValueChanged", G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_INVALID); - dbus_g_proxy_connect_signal (settings_proxy, - "ValueChanged", - G_CALLBACK (on_value_changed), - NULL, - NULL); - - + g_signal_connect (settings_proxy, "value-changed", G_CALLBACK (on_value_changed), NULL); return TRUE; } |