aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTed Gould <ted@gould.cx>2010-07-06 10:47:58 -0500
committerTed Gould <ted@gould.cx>2010-07-06 10:47:58 -0500
commitd23ca44c07ddf691ae41b4a6c5c10b794f1de765 (patch)
tree7f321b74b121110c1be588580a5a4ea6cda616a4
parent632c3f997f091be8daeedcd0eaf7f1043dca5530 (diff)
downloadlibayatana-indicator-d23ca44c07ddf691ae41b4a6c5c10b794f1de765.tar.gz
libayatana-indicator-d23ca44c07ddf691ae41b4a6c5c10b794f1de765.tar.bz2
libayatana-indicator-d23ca44c07ddf691ae41b4a6c5c10b794f1de765.zip
Actually creating a proxy to see if we can detect the watcher going away.
-rw-r--r--libindicator/indicator-service.c16
1 files changed, 13 insertions, 3 deletions
diff --git a/libindicator/indicator-service.c b/libindicator/indicator-service.c
index d3e873b..01fabce 100644
--- a/libindicator/indicator-service.c
+++ b/libindicator/indicator-service.c
@@ -387,9 +387,19 @@ _indicator_service_server_watch (IndicatorService * service, DBusGMethodInvocati
const gchar * sender = dbus_g_method_get_sender(method);
if (g_hash_table_lookup(priv->watchers, sender) == NULL) {
- DBusGProxy * senderproxy = (gpointer)1;
-
- g_hash_table_insert(priv->watchers, g_strdup(sender), senderproxy);
+ GError * error = NULL;
+ DBusGProxy * senderproxy = dbus_g_proxy_new_for_name_owner(priv->bus,
+ sender,
+ "/",
+ DBUS_INTERFACE_INTROSPECTABLE,
+ &error);
+
+ if (error == NULL) {
+ g_hash_table_insert(priv->watchers, g_strdup(sender), senderproxy);
+ } else {
+ g_warning("Unable to create proxy for watcher '%s': %s", sender, error->message);
+ g_error_free(error);
+ }
}
if (priv->timeout != 0) {