diff options
author | Jean-Benoit MARTIN <jean-benoit.martin@eurogiciel.fr> | 2013-04-23 11:54:48 +0200 |
---|---|---|
committer | Ray Strode <rstrode@redhat.com> | 2013-07-30 08:56:49 -0400 |
commit | 95975ad7a000a2ef6e4ffb71d0f0276571e2622b (patch) | |
tree | 2d71768ac85c59fa6fc604a168eb0be00471f178 | |
parent | ff396710227fb95abb2edd413af70ef59a321a72 (diff) | |
download | gdm-95975ad7a000a2ef6e4ffb71d0f0276571e2622b.tar.gz |
display: actually set slave_name_id and unwatch bus name in unmanage
slave_name_id is supposed to track the bus name watch of the slave, but
it was never getting set.
This commit sets it, and makes sure the watch is removed in unmanage.
https://bugzilla.gnome.org/show_bug.cgi?id=698370
-rw-r--r-- | daemon/gdm-display.c | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/daemon/gdm-display.c b/daemon/gdm-display.c index 5e26b529..b1adae8b 100644 --- a/daemon/gdm-display.c +++ b/daemon/gdm-display.c @@ -301,13 +301,13 @@ gdm_display_real_set_slave_bus_name (GdmDisplay *display, g_bus_unwatch_name (display->priv->slave_name_id); } - g_bus_watch_name_on_connection (display->priv->connection, - name, - G_BUS_NAME_WATCHER_FLAGS_NONE, - NULL, /* name appeared */ - on_name_vanished, - g_object_ref (display), - NULL); + display->priv->slave_name_id = g_bus_watch_name_on_connection (display->priv->connection, + name, + G_BUS_NAME_WATCHER_FLAGS_NONE, + NULL, /* name appeared */ + on_name_vanished, + g_object_ref (display), + NULL); g_clear_object (&display->priv->slave_bus_proxy); display->priv->slave_bus_proxy = GDM_DBUS_SLAVE (gdm_dbus_slave_proxy_new_sync (display->priv->connection, @@ -774,6 +774,11 @@ gdm_display_real_unmanage (GdmDisplay *display) _gdm_display_set_status (display, GDM_DISPLAY_UNMANAGED); } + if (display->priv->slave_name_id > 0) { + g_bus_unwatch_name (display->priv->slave_name_id); + display->priv->slave_name_id = 0; + } + return TRUE; } |