summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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;
}