From 088eff44dd923a80d2bc357be72b9ace0c97d06e Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Tue, 1 Dec 2009 10:19:11 -0600 Subject: When destroying the object we tell the watched service that we're not watching it. --- libindicator/indicator-service-manager.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/libindicator/indicator-service-manager.c b/libindicator/indicator-service-manager.c index 4eaed23..956eb90 100644 --- a/libindicator/indicator-service-manager.c +++ b/libindicator/indicator-service-manager.c @@ -51,6 +51,7 @@ static void indicator_service_manager_finalize (GObject *object); static void set_property (GObject * object, guint prop_id, const GValue * value, GParamSpec * pspec); static void get_property (GObject * object, guint prop_id, GValue * value, GParamSpec * pspec); static void start_service (IndicatorServiceManager * service); +static void unwatch_cb (DBusGProxy *proxy, GError *error, gpointer userdata); G_DEFINE_TYPE (IndicatorServiceManager, indicator_service_manager, G_TYPE_OBJECT); @@ -147,6 +148,12 @@ indicator_service_manager_dispose (GObject *object) priv->dbus_proxy = NULL; } + /* If we have a proxy, tell it we're shutting down. Just + to be polite about it. */ + if (priv->service_proxy != NULL) { + org_ayatana_indicator_service_un_watch_async(priv->service_proxy, unwatch_cb, NULL); + } + /* Destory our service proxy, we won't need it. */ if (priv->service_proxy != NULL) { g_object_unref(G_OBJECT(priv->service_proxy)); @@ -231,6 +238,12 @@ get_property (GObject * object, guint prop_id, GValue * value, GParamSpec * pspe return; } +static void +unwatch_cb (DBusGProxy *proxy, GError *error, gpointer userdata) +{ + return; +} + static void watch_cb (DBusGProxy * proxy, gint service_version, GError * error, gpointer user_data) { -- cgit v1.2.3