diff options
author | Ted Gould <ted@canonical.com> | 2009-08-08 10:47:24 -0600 |
---|---|---|
committer | Ted Gould <ted@canonical.com> | 2009-08-08 10:47:24 -0600 |
commit | c4a5e5cf9dabce8c58bc5e7ef4cfe79095d012df (patch) | |
tree | 73c92a80e4584a4b6abc3fb89806402bdf0140a8 /src/indicator-sus.c | |
parent | 840f181d3e1f0cce77a9460f975f5f3b81b9263f (diff) | |
download | ayatana-indicator-session-c4a5e5cf9dabce8c58bc5e7ef4cfe79095d012df.tar.gz ayatana-indicator-session-c4a5e5cf9dabce8c58bc5e7ef4cfe79095d012df.tar.bz2 ayatana-indicator-session-c4a5e5cf9dabce8c58bc5e7ef4cfe79095d012df.zip |
Fixing a few things with the dbus stuff and starting to listen to the extra information on the service.
Diffstat (limited to 'src/indicator-sus.c')
-rw-r--r-- | src/indicator-sus.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/src/indicator-sus.c b/src/indicator-sus.c index 1ab810c..24629d6 100644 --- a/src/indicator-sus.c +++ b/src/indicator-sus.c @@ -47,6 +47,7 @@ static GtkWidget * loading_item = NULL; static DBusGConnection * connection = NULL; static DBusGProxy * proxy = NULL; +static DBusGProxy * status_proxy = NULL; typedef enum { STATUS_SECTION, @@ -180,6 +181,29 @@ status_menu_root_changed(DbusmenuGtkClient * client, DbusmenuMenuitem * newroot, } static gboolean +connect_to_status (gpointer userdata) +{ + if (status_proxy == NULL) { + GError * error = NULL; + + DBusGConnection * sbus = dbus_g_bus_get(DBUS_BUS_SESSION, NULL); + + status_proxy = dbus_g_proxy_new_for_name_owner(sbus, + INDICATOR_STATUS_DBUS_NAME, + INDICATOR_STATUS_DBUS_OBJECT, + INDICATOR_STATUS_SERVICE_DBUS_INTERFACE, + &error); + + if (error != NULL) { + g_warning("Unable to get status proxy: %s", error->message); + g_error_free(error); + } + } + + return FALSE; +} + +static gboolean build_status_menu (gpointer userdata) { g_debug("Building Status Menu"); @@ -209,6 +233,8 @@ build_status_menu (gpointer userdata) gtk_menu_shell_append(GTK_MENU_SHELL(main_menu), status_separator); gtk_widget_hide(status_separator); /* Should be default, I'm just being explicit. $(%*#$ hide already! */ + g_idle_add(connect_to_status, NULL); + return FALSE; } |