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 14:38:42 -0400
commit18097e4fca851cceab4ca36a373d31b3808d7f1a (patch)
treecdcb6bd5123780252e557d8c512f6962876faa99
parent6a26f528402b4fc669335f30a9a58141d5d418dd (diff)
downloadgdm-18097e4fca851cceab4ca36a373d31b3808d7f1a.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;
}