From 269f1a1483dc6bed062ed970d05655ba26ed57c3 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Mon, 11 Jul 2011 16:34:48 -0500 Subject: Define the bus well known type in the session.conf file --- tests/Makefile.am | 4 ---- tests/session.conf.in | 2 ++ 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/tests/Makefile.am b/tests/Makefile.am index e78ac6b..9425789 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -258,8 +258,6 @@ service-manager-connect-tester: service-manager-connect service-manager-connect- TESTS += service-manager-connect-tester DISTCLEANFILES += service-manager-connect-tester session.conf service-manager-connect.service -# Bug 806690 -XFAIL_TESTS += service-manager-connect-tester ############################# # Service Versions @@ -323,8 +321,6 @@ service-version-tester: service-version-manager service-version-bad-service serv TESTS += service-version-tester DISTCLEANFILES += service-version-tester service-version-bad.service service-version-good.service -# Bug 806691 -XFAIL_TESTS += service-version-tester ############################# # Service Versions diff --git a/tests/session.conf.in b/tests/session.conf.in index d1e2805..5c0cf36 100644 --- a/tests/session.conf.in +++ b/tests/session.conf.in @@ -1,6 +1,8 @@ + session + -- cgit v1.2.3 From 64c3e2e2ba1ddcaac62e6ec50f414abd51e6b3d9 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Mon, 11 Jul 2011 17:01:12 -0500 Subject: Cleaning up removal of watchers as the string was getting free'd before it could get used to remove the entry from the hashtable. Now using a destroy function as that is possible with GDBus but wasn't with dbus-glib --- libindicator/indicator-service.c | 20 +++++++++----------- tests/Makefile.am | 2 -- 2 files changed, 9 insertions(+), 13 deletions(-) diff --git a/libindicator/indicator-service.c b/libindicator/indicator-service.c index e5eaa5b..1b4bc8c 100644 --- a/libindicator/indicator-service.c +++ b/libindicator/indicator-service.c @@ -32,7 +32,7 @@ License along with this library. If not, see #include "dbus-shared.h" static void unwatch_core (IndicatorService * service, const gchar * name); -static gboolean watchers_remove (gpointer key, gpointer value, gpointer user_data); +static void watchers_remove (gpointer value); static void bus_get_cb (GObject * object, GAsyncResult * res, gpointer user_data); static GVariant * bus_watch (IndicatorService * service, const gchar * sender); @@ -203,10 +203,9 @@ indicator_service_init (IndicatorService *self) } /* NOTE: We're using g_free here because that's what needs to - happen, but you really should call watchers_remove first as well - since that disconnects the signals. We can't do that with a callback - here because there is no user data to pass the object as well. */ - priv->watchers = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, NULL); + happen and we're watchers_remove as well to clean up the dbus + watches we've setup. */ + priv->watchers = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, watchers_remove); priv->bus_cancel = g_cancellable_new(); g_bus_get(G_BUS_TYPE_SESSION, @@ -225,7 +224,8 @@ indicator_service_dispose (GObject *object) IndicatorServicePrivate * priv = INDICATOR_SERVICE_GET_PRIVATE(object); if (priv->watchers != NULL) { - g_hash_table_foreach_remove(priv->watchers, watchers_remove, object); + g_hash_table_destroy(priv->watchers); + priv->watchers = NULL; } if (priv->timeout != 0) { @@ -407,11 +407,11 @@ bus_method_call (GDBusConnection * connection, const gchar * sender, const gchar /* A function to remove the signals on a proxy before we destroy it because in this case we've stopped caring. */ -static gboolean -watchers_remove (gpointer key, gpointer value, gpointer user_data) +static void +watchers_remove (gpointer value) { g_bus_unwatch_name(GPOINTER_TO_UINT(value)); - return TRUE; + return; } /* This is the function that gets executed if we timeout @@ -553,8 +553,6 @@ unwatch_core (IndicatorService * service, const gchar * name) /* Remove us from the watcher list here */ gpointer watcher_item = g_hash_table_lookup(priv->watchers, name); if (watcher_item != NULL) { - /* Free the watcher */ - watchers_remove((gpointer)name, watcher_item, service); g_hash_table_remove(priv->watchers, name); } else { /* Odd that we couldn't find the person, but, eh */ diff --git a/tests/Makefile.am b/tests/Makefile.am index 9425789..f11a9d1 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -378,8 +378,6 @@ service-version-multiwatch-tester: service-version-multiwatch-manager service-ve TESTS += service-version-multiwatch-tester DISTCLEANFILES += service-version-multiwatch-tester -# Bug 806692 -XFAIL_TESTS += service-version-multiwatch-tester ############################# # Service Manager Shutdown -- cgit v1.2.3