[gdm] Fix XDMCP show it shows the greeter again after logout. Patch by Halton Huo. Part of the fix for #6
- From: Brian Cameron <bcameron src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gdm] Fix XDMCP show it shows the greeter again after logout. Patch by Halton Huo. Part of the fix for #6
- Date: Thu, 22 Apr 2010 21:12:17 +0000 (UTC)
commit fb2b3df0125c1cfdf130ab065645daf4104b57fd
Author: Brian Cameron <Brian Cameron sun com>
Date: Thu Apr 22 16:11:19 2010 -0500
Fix XDMCP show it shows the greeter again after logout. Patch by Halton Huo.
Part of the fix for #606724.
daemon/gdm-xdmcp-display-factory.c | 37 ++++++++++++++++++++++++++++++++++++
1 files changed, 37 insertions(+), 0 deletions(-)
---
diff --git a/daemon/gdm-xdmcp-display-factory.c b/daemon/gdm-xdmcp-display-factory.c
index 7b5fb53..447833d 100644
--- a/daemon/gdm-xdmcp-display-factory.c
+++ b/daemon/gdm-xdmcp-display-factory.c
@@ -2025,6 +2025,38 @@ on_hostname_selected (GdmXdmcpChooserDisplay *display,
freeaddrinfo (ai_list);
}
+static void
+on_display_status_changed (GdmDisplay *display,
+ GParamSpec *arg1,
+ GdmXdmcpDisplayFactory *factory)
+{
+ int status;
+ GdmDisplayStore *store;
+
+ store = gdm_display_factory_get_display_store (GDM_DISPLAY_FACTORY (factory));
+
+ status = gdm_display_get_status (display);
+
+ g_debug ("GdmXdmcpDisplayFactory: xdmcp display status changed: %d", status);
+ switch (status) {
+ case GDM_DISPLAY_FINISHED:
+ gdm_display_store_remove (store, display);
+ break;
+ case GDM_DISPLAY_FAILED:
+ gdm_display_store_remove (store, display);
+ break;
+ case GDM_DISPLAY_UNMANAGED:
+ break;
+ case GDM_DISPLAY_PREPARED:
+ break;
+ case GDM_DISPLAY_MANAGED:
+ break;
+ default:
+ g_assert_not_reached ();
+ break;
+ }
+}
+
static GdmDisplay *
gdm_xdmcp_display_create (GdmXdmcpDisplayFactory *factory,
const char *hostname,
@@ -2075,6 +2107,11 @@ gdm_xdmcp_display_create (GdmXdmcpDisplayFactory *factory,
goto out;
}
+ g_signal_connect (display,
+ "notify::status",
+ G_CALLBACK (on_display_status_changed),
+ factory);
+
store = gdm_display_factory_get_display_store (GDM_DISPLAY_FACTORY (factory));
gdm_display_store_add (store, display);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]