summaryrefslogtreecommitdiff
path: root/daemon/gdm-xdmcp-chooser-display.c
diff options
context:
space:
mode:
authorRay Strode <rstrode@redhat.com>2015-01-29 16:25:37 -0500
committerRay Strode <rstrode@redhat.com>2015-02-18 17:34:12 -0500
commit50f32ce669d927460df4754e917a1f19f0c656bb (patch)
tree1b2e262e0008f9ef03e83e8d6d019e33953a6e56 /daemon/gdm-xdmcp-chooser-display.c
parent0cc8b02f339d7661999a08f9c35cc51d5a2d5531 (diff)
downloadgdm-50f32ce669d927460df4754e917a1f19f0c656bb.tar.gz
display: start greeter/chooser session from display object
We're trying to get rid of the slave code, so we need to move responibility for launching the greeter to the display objects. This commit changes the display classes to set up a launch environment that the base class runs. https://bugzilla.gnome.org/show_bug.cgi?id=744764
Diffstat (limited to 'daemon/gdm-xdmcp-chooser-display.c')
-rw-r--r--daemon/gdm-xdmcp-chooser-display.c37
1 files changed, 27 insertions, 10 deletions
diff --git a/daemon/gdm-xdmcp-chooser-display.c b/daemon/gdm-xdmcp-chooser-display.c
index 371c2b0a..711751bb 100644
--- a/daemon/gdm-xdmcp-chooser-display.c
+++ b/daemon/gdm-xdmcp-chooser-display.c
@@ -36,6 +36,7 @@
#include <glib-object.h>
#include "gdm-display.h"
+#include "gdm-launch-environment.h"
#include "gdm-xdmcp-chooser-display.h"
#include "gdm-xdmcp-chooser-slave.h"
@@ -56,7 +57,7 @@ static gboolean gdm_xdmcp_chooser_display_prepare (GdmDisplay *display);
G_DEFINE_TYPE (GdmXdmcpChooserDisplay, gdm_xdmcp_chooser_display, GDM_TYPE_XDMCP_DISPLAY)
static void
-on_hostname_selected (GdmXdmcpChooserSlave *slave,
+on_hostname_selected (GdmLaunchEnvironment *launch_environment,
const char *hostname,
GdmXdmcpChooserDisplay *display)
{
@@ -93,17 +94,33 @@ gdm_xdmcp_chooser_display_init (GdmXdmcpChooserDisplay *xdmcp_chooser_display)
static gboolean
gdm_xdmcp_chooser_display_prepare (GdmDisplay *display)
{
- GdmXdmcpChooserSlave *slave;
-
- if (!GDM_DISPLAY_CLASS (gdm_xdmcp_chooser_display_parent_class)->prepare (display))
- return FALSE;
-
- slave = GDM_XDMCP_CHOOSER_SLAVE (gdm_display_get_slave (display));
-
- g_signal_connect (slave, "hostname-selected",
+ GdmXdmcpDisplay *self = GDM_XDMCP_DISPLAY (display);
+ GdmLaunchEnvironment *launch_environment;
+ char *display_name;
+ char *seat_id;
+ char *hostname;
+
+ launch_environment = NULL;
+ display_name = NULL;
+ seat_id = NULL;
+ hostname = NULL;
+
+ g_object_get (self,
+ "x11-display-name", &display_name,
+ "seat-id", &seat_id,
+ "remote-hostname", &hostname,
+ NULL);
+
+ launch_environment = gdm_create_chooser_launch_environment (display_name,
+ seat_id,
+ hostname);
+ g_object_set (self, "launch-environment", launch_environment, NULL);
+ g_object_unref (launch_environment);
+
+ g_signal_connect (launch_environment, "hostname-selected",
G_CALLBACK (on_hostname_selected), display);
- return TRUE;
+ return GDM_DISPLAY_CLASS (gdm_xdmcp_chooser_display_parent_class)->prepare (display);
}
GdmDisplay *