diff options
author | William Jon McCann <jmccann@redhat.com> | 2008-12-03 01:49:35 +0000 |
---|---|---|
committer | William Jon McCann <mccann@src.gnome.org> | 2008-12-03 01:49:35 +0000 |
commit | 816c5872dd488903bef2af5385bb72691d918eca (patch) | |
tree | 23a97a021027ff7245f25bfb63c368ba50809155 /daemon/gdm-xdmcp-display-factory.c | |
parent | e259c339df3e9d09b43d2e3fdc49ce1cf1a96ea3 (diff) | |
download | gdm-816c5872dd488903bef2af5385bb72691d918eca.tar.gz |
Correctly handle changes in the xdmcp enabled property. Add a display
2008-12-02 William Jon McCann <jmccann@redhat.com>
* daemon/gdm-display.c (gdm_display_real_prepare),
(gdm_display_prepare), (gdm_display_real_manage),
(gdm_display_class_init):
* daemon/gdm-display.h:
* daemon/gdm-local-display-factory.c
(on_static_display_status_changed):
* daemon/gdm-manager.c (gdm_manager_stop), (gdm_manager_start),
(gdm_manager_set_xdmcp_enabled):
* daemon/gdm-manager.h:
* daemon/gdm-xdmcp-display-factory.c (gdm_xdmcp_display_create),
(gdm_xdmcp_handle_manage):
Correctly handle changes in the xdmcp enabled property.
Add a display state called prepared that sets up the display
before actually managing (starting) it. This is required
for the XDMCP Request phase to work.
Fixes #561396
svn path=/trunk/; revision=6610
Diffstat (limited to 'daemon/gdm-xdmcp-display-factory.c')
-rw-r--r-- | daemon/gdm-xdmcp-display-factory.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/daemon/gdm-xdmcp-display-factory.c b/daemon/gdm-xdmcp-display-factory.c index 57695a1d..58cdf59c 100644 --- a/daemon/gdm-xdmcp-display-factory.c +++ b/daemon/gdm-xdmcp-display-factory.c @@ -2041,6 +2041,13 @@ gdm_xdmcp_display_create (GdmXdmcpDisplayFactory *factory, goto out; } + if (! gdm_display_prepare (display)) { + gdm_display_unmanage (display); + g_object_unref (display); + display = NULL; + goto out; + } + store = gdm_display_factory_get_display_store (GDM_DISPLAY_FACTORY (factory)); gdm_display_store_add (store, display); @@ -2507,7 +2514,7 @@ gdm_xdmcp_handle_manage (GdmXdmcpDisplayFactory *factory, display = gdm_xdmcp_display_lookup (factory, clnt_sessid); if (display != NULL && - gdm_display_get_status (display) == GDM_DISPLAY_UNMANAGED) { + gdm_display_get_status (display) == GDM_DISPLAY_PREPARED) { char *name; name = NULL; |