summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJean-Benoit MARTIN <jean-benoit.martin@eurogiciel.fr>2013-04-23 11:54:48 +0200
committerRay Strode <rstrode@redhat.com>2013-07-30 08:56:49 -0400
commit95975ad7a000a2ef6e4ffb71d0f0276571e2622b (patch)
tree2d71768ac85c59fa6fc604a168eb0be00471f178
parentff396710227fb95abb2edd413af70ef59a321a72 (diff)
downloadgdm-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.c19
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;
}