From 087c7f0b7546ac5fc47a301540484053a7c80592 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Fri, 8 Jan 2010 14:41:31 -0600 Subject: Making the service have a name different than the watcher interface. --- src/dbus-shared.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/dbus-shared.h b/src/dbus-shared.h index efc57a4..b8dc016 100644 --- a/src/dbus-shared.h +++ b/src/dbus-shared.h @@ -20,10 +20,11 @@ with this program. If not, see . */ -#define INDICATOR_APPLICATION_DBUS_ADDR "org.freedesktop.StatusNotifierWatcher" +#define INDICATOR_APPLICATION_DBUS_ADDR "org.ayatana.indicator.application" #define INDICATOR_APPLICATION_DBUS_OBJ "/org/ayatana/indicator/application/service" #define INDICATOR_APPLICATION_DBUS_IFACE "org.ayatana.indicator.application.service" +#define NOTIFICATION_WATCHER_DBUS_ADDR "org.freedesktop.StatusNotifierWatcher" #define NOTIFICATION_WATCHER_DBUS_OBJ "/StatusNotifierWatcher" #define NOTIFICATION_WATCHER_DBUS_IFACE "org.freedesktop.StatusNotifierWatcher" -- cgit v1.2.3 From 34bb6cbec79679821520ac13d2f1cf935d845151 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Fri, 8 Jan 2010 14:57:22 -0600 Subject: Make the watcher register it's own name --- src/application-service-watcher.c | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/src/application-service-watcher.c b/src/application-service-watcher.c index 1ad59d4..eff249d 100644 --- a/src/application-service-watcher.c +++ b/src/application-service-watcher.c @@ -26,6 +26,7 @@ with this program. If not, see . #include #include +#include #include "application-service-watcher.h" #include "dbus-shared.h" @@ -34,6 +35,7 @@ static gboolean _notification_watcher_server_registered_status_notifier_items (A static gboolean _notification_watcher_server_protocol_version (ApplicationServiceWatcher * appwatcher, char ** version); static gboolean _notification_watcher_server_register_notification_host (ApplicationServiceWatcher * appwatcher, const gchar * host); static gboolean _notification_watcher_server_is_notification_host_registered (ApplicationServiceWatcher * appwatcher, gboolean * haveHost); +static void get_name_cb (DBusGProxy * proxy, guint status, GError * error, gpointer data); #include "notification-watcher-server.h" @@ -41,6 +43,7 @@ static gboolean _notification_watcher_server_is_notification_host_registered (Ap typedef struct _ApplicationServiceWatcherPrivate ApplicationServiceWatcherPrivate; struct _ApplicationServiceWatcherPrivate { ApplicationServiceAppstore * appstore; + DBusGProxy * dbus_proxy; }; #define APPLICATION_SERVICE_WATCHER_GET_PRIVATE(o) \ @@ -129,6 +132,23 @@ application_service_watcher_init (ApplicationServiceWatcher *self) NOTIFICATION_WATCHER_DBUS_OBJ, G_OBJECT(self)); + priv->dbus_proxy = dbus_g_proxy_new_for_name_owner(session_bus, + DBUS_SERVICE_DBUS, + DBUS_PATH_DBUS, + DBUS_INTERFACE_DBUS, + &error); + if (error != NULL) { + g_error("Ah, can't get proxy to dbus: %s", error->message); + g_error_free(error); + return; + } + + org_freedesktop_DBus_request_name_async(priv->dbus_proxy, + NOTIFICATION_WATCHER_DBUS_ADDR, + DBUS_NAME_FLAG_DO_NOT_QUEUE, + get_name_cb, + self); + return; } @@ -211,3 +231,21 @@ _notification_watcher_server_is_notification_host_registered (ApplicationService return TRUE; } +/* Function to handle the return of the get name. There isn't a whole + lot that can be done, but we're atleast going to tell people. */ +static void +get_name_cb (DBusGProxy * proxy, guint status, GError * error, gpointer data) +{ + if (error != NULL) { + g_warning("Unable to get watcher name '%s' because: %s", NOTIFICATION_WATCHER_DBUS_ADDR, error->message); + return; + } + + if (status != DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER && + status != DBUS_REQUEST_NAME_REPLY_ALREADY_OWNER) { + g_warning("Unable to get watcher name '%s'", NOTIFICATION_WATCHER_DBUS_ADDR); + return; + } + + return; +} -- cgit v1.2.3 From 8d0d0e408b316862980ee722e00a9aa122a1a368 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Fri, 8 Jan 2010 14:59:13 -0600 Subject: Making applications register to the watcher address so they work on KDE --- src/libappindicator/app-indicator.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libappindicator/app-indicator.c b/src/libappindicator/app-indicator.c index 5868a4d..7560a97 100644 --- a/src/libappindicator/app-indicator.c +++ b/src/libappindicator/app-indicator.c @@ -530,7 +530,7 @@ check_connect (AppIndicator *self) GError * error = NULL; priv->watcher_proxy = dbus_g_proxy_new_for_name_owner(priv->connection, - INDICATOR_APPLICATION_DBUS_ADDR, + NOTIFICATION_WATCHER_DBUS_ADDR, NOTIFICATION_WATCHER_DBUS_OBJ, NOTIFICATION_WATCHER_DBUS_IFACE, &error); -- cgit v1.2.3