diff options
-rw-r--r-- | common/gdm-marshal.list | 2 | ||||
-rw-r--r-- | daemon/ck-connector.c | 1 | ||||
-rw-r--r-- | daemon/gdm-display.c | 38 | ||||
-rw-r--r-- | daemon/gdm-display.h | 3 | ||||
-rw-r--r-- | daemon/gdm-display.xml | 3 | ||||
-rw-r--r-- | daemon/gdm-local-display-factory.c | 12 | ||||
-rw-r--r-- | daemon/gdm-product-slave.c | 4 | ||||
-rw-r--r-- | daemon/gdm-session-direct.c | 44 | ||||
-rw-r--r-- | daemon/gdm-session-direct.h | 1 | ||||
-rw-r--r-- | daemon/gdm-session-worker.c | 24 | ||||
-rw-r--r-- | daemon/gdm-simple-slave.c | 3 | ||||
-rw-r--r-- | daemon/gdm-slave.c | 43 | ||||
-rw-r--r-- | daemon/test-session.c | 1 |
13 files changed, 175 insertions, 4 deletions
diff --git a/common/gdm-marshal.list b/common/gdm-marshal.list index 0a9b4e64..d6578fd4 100644 --- a/common/gdm-marshal.list +++ b/common/gdm-marshal.list @@ -5,4 +5,4 @@ VOID:STRING,STRING VOID:UINT,UINT VOID:STRING,INT VOID:DOUBLE -VOID:STRING,STRING,POINTER,STRING,POINTER +VOID:STRING,STRING,STRING,POINTER,STRING,POINTER diff --git a/daemon/ck-connector.c b/daemon/ck-connector.c index 14f0527b..8f6a4079 100644 --- a/daemon/ck-connector.c +++ b/daemon/ck-connector.c @@ -81,6 +81,7 @@ static struct { { "session", DBUS_TYPE_STRING }, { "remote-host-name", DBUS_TYPE_STRING }, { "session-type", DBUS_TYPE_STRING }, + { "display-type", DBUS_TYPE_STRING }, { "is-local", DBUS_TYPE_BOOLEAN }, { "is-dynamic", DBUS_TYPE_BOOLEAN }, { "unix-user", DBUS_TYPE_INT32 }, diff --git a/daemon/gdm-display.c b/daemon/gdm-display.c index 24be2455..da60e5f8 100644 --- a/daemon/gdm-display.c +++ b/daemon/gdm-display.c @@ -58,6 +58,7 @@ struct GdmDisplayPrivate char *x11_command; int x11_display_number; char *x11_display_name; + char *x11_display_type; int status; time_t creation_time; GTimer *slave_timer; @@ -88,6 +89,7 @@ enum { PROP_REMOTE_HOSTNAME, PROP_X11_DISPLAY_NUMBER, PROP_X11_DISPLAY_NAME, + PROP_X11_DISPLAY_TYPE, PROP_X11_COOKIE, PROP_X11_AUTHORITY_FILE, PROP_IS_LOCAL, @@ -797,6 +799,20 @@ gdm_display_get_x11_display_name (GdmDisplay *display, } gboolean +gdm_display_get_x11_display_type (GdmDisplay *display, + char **type, + GError **error) +{ + g_return_val_if_fail (GDM_IS_DISPLAY (display), FALSE); + + if (type != NULL) { + *type = g_strdup (display->priv->x11_display_type); + } + + return TRUE; +} + +gboolean gdm_display_is_local (GdmDisplay *display, gboolean *local, GError **error) @@ -904,6 +920,14 @@ _gdm_display_set_x11_display_name (GdmDisplay *display, } static void +_gdm_display_set_x11_display_type (GdmDisplay *display, + const char *display_type) +{ + g_free (display->priv->x11_display_type); + display->priv->x11_display_type = g_strdup (display_type); +} + +static void _gdm_display_set_x11_cookie (GdmDisplay *display, const char *x11_cookie) { @@ -982,6 +1006,9 @@ gdm_display_set_property (GObject *object, case PROP_X11_DISPLAY_NAME: _gdm_display_set_x11_display_name (self, g_value_get_string (value)); break; + case PROP_X11_DISPLAY_TYPE: + _gdm_display_set_x11_display_type (self, g_value_get_string (value)); + break; case PROP_X11_COOKIE: _gdm_display_set_x11_cookie (self, g_value_get_string (value)); break; @@ -1041,6 +1068,9 @@ gdm_display_get_property (GObject *object, case PROP_X11_DISPLAY_NAME: g_value_set_string (value, self->priv->x11_display_name); break; + case PROP_X11_DISPLAY_TYPE: + g_value_set_string (value, self->priv->x11_display_type); + break; case PROP_X11_COOKIE: g_value_set_string (value, self->priv->x11_cookie); break; @@ -1209,6 +1239,13 @@ gdm_display_class_init (GdmDisplayClass *klass) NULL, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); g_object_class_install_property (object_class, + PROP_X11_DISPLAY_TYPE, + g_param_spec_string ("x11-display-type", + "x11-display-type", + "x11-display-type", + NULL, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT)); + g_object_class_install_property (object_class, PROP_SEAT_ID, g_param_spec_string ("seat-id", "seat id", @@ -1315,6 +1352,7 @@ gdm_display_finalize (GObject *object) g_free (display->priv->session_id); g_free (display->priv->remote_hostname); g_free (display->priv->x11_display_name); + g_free (display->priv->x11_display_type); g_free (display->priv->x11_cookie); g_free (display->priv->slave_command); diff --git a/daemon/gdm-display.h b/daemon/gdm-display.h index d615af88..492aa5fb 100644 --- a/daemon/gdm-display.h +++ b/daemon/gdm-display.h @@ -114,6 +114,9 @@ gboolean gdm_display_get_x11_display_number (GdmDisplay *disp gboolean gdm_display_get_x11_display_name (GdmDisplay *display, char **x11_display, GError **error); +gboolean gdm_display_get_x11_display_type (GdmDisplay *display, + char **type, + GError **error); gboolean gdm_display_get_seat_id (GdmDisplay *display, char **seat_id, GError **error); diff --git a/daemon/gdm-display.xml b/daemon/gdm-display.xml index 65e26b5f..945939a1 100644 --- a/daemon/gdm-display.xml +++ b/daemon/gdm-display.xml @@ -10,6 +10,9 @@ <method name="GetX11DisplayName"> <arg name="name" direction="out" type="s"/> </method> + <method name="GetX11DisplayType"> + <arg name="type" direction="out" type="s"/> + </method> <method name="GetX11DisplayNumber"> <arg name="number" direction="out" type="i"/> </method> diff --git a/daemon/gdm-local-display-factory.c b/daemon/gdm-local-display-factory.c index 2a28c14a..6512f9b3 100644 --- a/daemon/gdm-local-display-factory.c +++ b/daemon/gdm-local-display-factory.c @@ -508,7 +508,8 @@ strrep (char* in, char** out, char* old, char* new) static void seat_open_session_request (DBusGProxy *seat_proxy, const char *ssid, - const char *type, + const char *session_type, + const char *display_template_name, GHashTable *display_variables, const char *display_type, GHashTable *parameters, @@ -610,6 +611,8 @@ seat_open_session_request (DBusGProxy *seat_proxy, if (IS_STR_SET (comm)) g_object_set (display, "x11-command", comm, NULL); g_free (comm); + if (IS_STR_SET (display_template_name)) + g_object_set (display, "x11-display-type", display_template_name, NULL); g_object_set (display, "use-auth", use_auth, NULL); g_signal_connect (display, @@ -764,9 +767,11 @@ manage_static_sessions_per_seat (GdmLocalDisplayFactory *factory, return; } - dbus_g_object_register_marshaller (gdm_marshal_VOID__STRING_STRING_POINTER_STRING_POINTER, + dbus_g_object_register_marshaller (gdm_marshal_VOID__STRING_STRING_STRING_POINTER_STRING_POINTER, G_TYPE_NONE, - DBUS_TYPE_G_OBJECT_PATH, G_TYPE_STRING, + DBUS_TYPE_G_OBJECT_PATH, + G_TYPE_STRING, + G_TYPE_STRING, GDM_DBUS_TYPE_G_STRING_STRING_HASHTABLE, G_TYPE_STRING, GDM_DBUS_TYPE_G_STRING_STRING_HASHTABLE, @@ -775,6 +780,7 @@ manage_static_sessions_per_seat (GdmLocalDisplayFactory *factory, "OpenSessionRequest", DBUS_TYPE_G_OBJECT_PATH, G_TYPE_STRING, + G_TYPE_STRING, GDM_DBUS_TYPE_G_STRING_STRING_HASHTABLE, G_TYPE_STRING, GDM_DBUS_TYPE_G_STRING_STRING_HASHTABLE, diff --git a/daemon/gdm-product-slave.c b/daemon/gdm-product-slave.c index 2af3a46d..c767b538 100644 --- a/daemon/gdm-product-slave.c +++ b/daemon/gdm-product-slave.c @@ -800,6 +800,7 @@ create_new_session (GdmProductSlave *slave) gboolean display_is_local; char *display_id; char *display_name; + char *display_type; char *display_hostname; char *display_device; char *display_x11_authority_file; @@ -809,6 +810,7 @@ create_new_session (GdmProductSlave *slave) g_object_get (slave, "display-id", &display_id, "display-name", &display_name, + "display-type", &display_type, "display-hostname", &display_hostname, "display-is-local", &display_is_local, "display-x11-authority-file", &display_x11_authority_file, @@ -819,12 +821,14 @@ create_new_session (GdmProductSlave *slave) slave->priv->session = gdm_session_direct_new (display_id, display_name, + display_type, display_hostname, display_device, display_x11_authority_file, display_is_local); g_free (display_id); g_free (display_name); + g_free (display_type); g_free (display_hostname); g_free (display_device); diff --git a/daemon/gdm-session-direct.c b/daemon/gdm-session-direct.c index 1a08aede..339f335e 100644 --- a/daemon/gdm-session-direct.c +++ b/daemon/gdm-session-direct.c @@ -85,6 +85,7 @@ struct _GdmSessionDirectPrivate char *id; char *display_id; char *display_name; + char *display_type; char *display_hostname; char *display_device; char *display_x11_authority_file; @@ -101,6 +102,7 @@ enum { PROP_0, PROP_DISPLAY_ID, PROP_DISPLAY_NAME, + PROP_DISPLAY_TYPE, PROP_DISPLAY_HOSTNAME, PROP_DISPLAY_IS_LOCAL, PROP_DISPLAY_DEVICE, @@ -1298,6 +1300,7 @@ do_introspect (DBusConnection *connection, " <signal name=\"Setup\">\n" " <arg name=\"service_name\" type=\"s\"/>\n" " <arg name=\"x11_display_name\" type=\"s\"/>\n" + " <arg name=\"x11_display_type\" type=\"s\"/>\n" " <arg name=\"display_device\" type=\"s\"/>\n" " <arg name=\"hostname\" type=\"s\"/>\n" " <arg name=\"x11_authority_file\" type=\"s\"/>\n" @@ -1305,6 +1308,7 @@ do_introspect (DBusConnection *connection, " <signal name=\"SetupForUser\">\n" " <arg name=\"service_name\" type=\"s\"/>\n" " <arg name=\"x11_display_name\" type=\"s\"/>\n" + " <arg name=\"x11_display_type\" type=\"s\"/>\n" " <arg name=\"display_device\" type=\"s\"/>\n" " <arg name=\"hostname\" type=\"s\"/>\n" " <arg name=\"x11_authority_file\" type=\"s\"/>\n" @@ -1687,6 +1691,7 @@ send_setup (GdmSessionDirect *session, DBusMessage *message; DBusMessageIter iter; const char *display_name; + const char *display_type; const char *display_device; const char *display_hostname; const char *display_x11_authority_file; @@ -1698,6 +1703,11 @@ send_setup (GdmSessionDirect *session, } else { display_name = ""; } + if (session->priv->display_type != NULL) { + display_type = session->priv->display_type; + } else { + display_type = ""; + } if (session->priv->display_hostname != NULL) { display_hostname = session->priv->display_hostname; } else { @@ -1723,6 +1733,7 @@ send_setup (GdmSessionDirect *session, dbus_message_iter_init_append (message, &iter); dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &service_name); dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &display_name); + dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &display_type); dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &display_device); dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &display_hostname); dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &display_x11_authority_file); @@ -1741,6 +1752,7 @@ send_setup_for_user (GdmSessionDirect *session, DBusMessage *message; DBusMessageIter iter; const char *display_name; + const char *display_type; const char *display_device; const char *display_hostname; const char *display_x11_authority_file; @@ -1753,6 +1765,11 @@ send_setup_for_user (GdmSessionDirect *session, } else { display_name = ""; } + if (session->priv->display_type != NULL) { + display_type = session->priv->display_type; + } else { + display_type = ""; + } if (session->priv->display_hostname != NULL) { display_hostname = session->priv->display_hostname; } else { @@ -1783,6 +1800,7 @@ send_setup_for_user (GdmSessionDirect *session, dbus_message_iter_init_append (message, &iter); dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &service_name); dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &display_name); + dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &display_type); dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &display_device); dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &display_hostname); dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &display_x11_authority_file); @@ -2188,6 +2206,14 @@ _gdm_session_direct_set_display_name (GdmSessionDirect *session, } static void +_gdm_session_direct_set_display_type (GdmSessionDirect *session, + const char *type) +{ + g_free (session->priv->display_type); + session->priv->display_type = g_strdup (type); +} + +static void _gdm_session_direct_set_display_hostname (GdmSessionDirect *session, const char *name) { @@ -2252,6 +2278,9 @@ gdm_session_direct_set_property (GObject *object, case PROP_DISPLAY_NAME: _gdm_session_direct_set_display_name (self, g_value_get_string (value)); break; + case PROP_DISPLAY_TYPE: + _gdm_session_direct_set_display_type (self, g_value_get_string (value)); + break; case PROP_DISPLAY_HOSTNAME: _gdm_session_direct_set_display_hostname (self, g_value_get_string (value)); break; @@ -2293,6 +2322,9 @@ gdm_session_direct_get_property (GObject *object, case PROP_DISPLAY_NAME: g_value_set_string (value, self->priv->display_name); break; + case PROP_DISPLAY_TYPE: + g_value_set_string (value, self->priv->display_type); + break; case PROP_DISPLAY_HOSTNAME: g_value_set_string (value, self->priv->display_hostname); break; @@ -2334,6 +2366,9 @@ gdm_session_direct_dispose (GObject *object) g_free (session->priv->display_name); session->priv->display_name = NULL; + g_free (session->priv->display_type); + session->priv->display_type = NULL; + g_free (session->priv->display_hostname); session->priv->display_hostname = NULL; @@ -2486,6 +2521,13 @@ gdm_session_direct_class_init (GdmSessionDirectClass *session_class) NULL, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); g_object_class_install_property (object_class, + PROP_DISPLAY_TYPE, + g_param_spec_string ("display-type", + "display type", + "display type", + NULL, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); + g_object_class_install_property (object_class, PROP_DISPLAY_HOSTNAME, g_param_spec_string ("display-hostname", "display hostname", @@ -2537,6 +2579,7 @@ gdm_session_direct_class_init (GdmSessionDirectClass *session_class) GdmSessionDirect * gdm_session_direct_new (const char *display_id, const char *display_name, + const char *display_type, const char *display_hostname, const char *display_device, const char *display_x11_authority_file, @@ -2547,6 +2590,7 @@ gdm_session_direct_new (const char *display_id, session = g_object_new (GDM_TYPE_SESSION_DIRECT, "display-id", display_id, "display-name", display_name, + "display-type", display_type, "display-hostname", display_hostname, "display-device", display_device, "display-x11-authority-file", display_x11_authority_file, diff --git a/daemon/gdm-session-direct.h b/daemon/gdm-session-direct.h index 284d902f..766aa0a2 100644 --- a/daemon/gdm-session-direct.h +++ b/daemon/gdm-session-direct.h @@ -50,6 +50,7 @@ GType gdm_session_direct_get_type (void); GdmSessionDirect * gdm_session_direct_new (const char *display_id, const char *display_name, + const char *display_type, const char *display_hostname, const char *display_device, const char *display_x11_authority_file, diff --git a/daemon/gdm-session-worker.c b/daemon/gdm-session-worker.c index 02f548c4..cbbf8ea6 100644 --- a/daemon/gdm-session-worker.c +++ b/daemon/gdm-session-worker.c @@ -112,6 +112,7 @@ struct GdmSessionWorkerPrivate /* from Setup */ char *service; char *x11_display_name; + char *x11_display_type; char *x11_authority_file; char *display_device; char *hostname; @@ -171,6 +172,7 @@ open_ck_session (GdmSessionWorker *worker) int res; DBusError error; const char *display_name; + const char *display_type; const char *display_device; const char *display_hostname; gboolean is_local; @@ -180,6 +182,11 @@ open_ck_session (GdmSessionWorker *worker) } else { display_name = ""; } + if (worker->priv->x11_display_type != NULL) { + display_type = worker->priv->x11_display_type; + } else { + display_type = ""; + } if (worker->priv->hostname != NULL) { display_hostname = worker->priv->hostname; } else { @@ -216,6 +223,7 @@ open_ck_session (GdmSessionWorker *worker) dbus_error_init (&error); res = ck_connector_open_session_with_parameters (worker->priv->ckc, &error, + "display-type", &display_type, "unix-user", &pwent->pw_uid, "x11-display", &display_name, "x11-display-device", &display_device, @@ -2372,6 +2380,7 @@ on_setup (GdmSessionWorker *worker, DBusError error; const char *service; const char *x11_display_name; + const char *x11_display_type; const char *x11_authority_file; const char *console; const char *hostname; @@ -2387,6 +2396,7 @@ on_setup (GdmSessionWorker *worker, &error, DBUS_TYPE_STRING, &service, DBUS_TYPE_STRING, &x11_display_name, + DBUS_TYPE_STRING, &x11_display_type, DBUS_TYPE_STRING, &console, DBUS_TYPE_STRING, &hostname, DBUS_TYPE_STRING, &x11_authority_file, @@ -2394,6 +2404,7 @@ on_setup (GdmSessionWorker *worker, if (res) { worker->priv->service = g_strdup (service); worker->priv->x11_display_name = g_strdup (x11_display_name); + worker->priv->x11_display_type = g_strdup (x11_display_type); worker->priv->x11_authority_file = g_strdup (x11_authority_file); worker->priv->display_device = g_strdup (console); worker->priv->hostname = g_strdup (hostname); @@ -2414,6 +2425,7 @@ on_setup_for_user (GdmSessionWorker *worker, DBusError error; const char *service; const char *x11_display_name; + const char *x11_display_type; const char *x11_authority_file; const char *console; const char *hostname; @@ -2430,6 +2442,7 @@ on_setup_for_user (GdmSessionWorker *worker, &error, DBUS_TYPE_STRING, &service, DBUS_TYPE_STRING, &x11_display_name, + DBUS_TYPE_STRING, &x11_display_type, DBUS_TYPE_STRING, &console, DBUS_TYPE_STRING, &hostname, DBUS_TYPE_STRING, &x11_authority_file, @@ -2438,6 +2451,7 @@ on_setup_for_user (GdmSessionWorker *worker, if (res) { worker->priv->service = g_strdup (service); worker->priv->x11_display_name = g_strdup (x11_display_name); + worker->priv->x11_display_type = g_strdup (x11_display_type); worker->priv->x11_authority_file = g_strdup (x11_authority_file); worker->priv->display_device = g_strdup (console); worker->priv->hostname = g_strdup (hostname); @@ -2712,6 +2726,16 @@ gdm_session_worker_finalize (GObject *object) gdm_session_worker_unwatch_child (worker); + if (worker->priv->x11_display_name != NULL) { + g_free (worker->priv->x11_display_name); + worker->priv->x11_display_name = NULL; + } + + if (worker->priv->x11_display_type != NULL) { + g_free (worker->priv->x11_display_type); + worker->priv->x11_display_type = NULL; + } + if (worker->priv->username != NULL) { g_free (worker->priv->username); worker->priv->username = NULL; diff --git a/daemon/gdm-simple-slave.c b/daemon/gdm-simple-slave.c index b7de4bce..11f798f5 100644 --- a/daemon/gdm-simple-slave.c +++ b/daemon/gdm-simple-slave.c @@ -588,6 +588,7 @@ create_new_session (GdmSimpleSlave *slave) gboolean display_is_local; char *display_id; char *display_name; + char *display_type; char *display_hostname; char *display_device; char *display_x11_authority_file; @@ -597,6 +598,7 @@ create_new_session (GdmSimpleSlave *slave) g_object_get (slave, "display-id", &display_id, "display-name", &display_name, + "display-type", &display_type, "display-hostname", &display_hostname, "display-is-local", &display_is_local, "display-x11-authority-file", &display_x11_authority_file, @@ -609,6 +611,7 @@ create_new_session (GdmSimpleSlave *slave) slave->priv->session = gdm_session_direct_new (display_id, display_name, + display_type, display_hostname, display_device, display_x11_authority_file, diff --git a/daemon/gdm-slave.c b/daemon/gdm-slave.c index 513fcf9a..47b1419a 100644 --- a/daemon/gdm-slave.c +++ b/daemon/gdm-slave.c @@ -79,6 +79,7 @@ struct GdmSlavePrivate /* cached display values */ char *display_id; char *display_name; + char *display_type; int display_number; char *display_hostname; gboolean display_is_local; @@ -100,6 +101,7 @@ enum { PROP_0, PROP_DISPLAY_ID, PROP_DISPLAY_NAME, + PROP_DISPLAY_TYPE, PROP_DISPLAY_NUMBER, PROP_DISPLAY_HOSTNAME, PROP_DISPLAY_IS_LOCAL, @@ -588,6 +590,24 @@ gdm_slave_real_start (GdmSlave *slave) error = NULL; res = dbus_g_proxy_call (slave->priv->display_proxy, + "GetX11DisplayType", + &error, + G_TYPE_INVALID, + G_TYPE_STRING, &slave->priv->display_type, + G_TYPE_INVALID); + if (! res) { + if (error != NULL) { + g_warning ("Failed to get value: %s", error->message); + g_error_free (error); + } else { + g_warning ("Failed to get value"); + } + + return FALSE; + } + + error = NULL; + res = dbus_g_proxy_call (slave->priv->display_proxy, "GetX11DisplayNumber", &error, G_TYPE_INVALID, @@ -1300,6 +1320,15 @@ _gdm_slave_set_display_name (GdmSlave *slave, slave->priv->display_name = g_strdup (name); } + +static void +_gdm_slave_set_display_type (GdmSlave *slave, + const char *type) +{ + g_free (slave->priv->display_type); + slave->priv->display_type = g_strdup (type); +} + static void _gdm_slave_set_display_number (GdmSlave *slave, int number) @@ -1370,6 +1399,9 @@ gdm_slave_set_property (GObject *object, case PROP_DISPLAY_NAME: _gdm_slave_set_display_name (self, g_value_get_string (value)); break; + case PROP_DISPLAY_TYPE: + _gdm_slave_set_display_type (self, g_value_get_string (value)); + break; case PROP_DISPLAY_NUMBER: _gdm_slave_set_display_number (self, g_value_get_int (value)); break; @@ -1414,6 +1446,9 @@ gdm_slave_get_property (GObject *object, case PROP_DISPLAY_NAME: g_value_set_string (value, self->priv->display_name); break; + case PROP_DISPLAY_TYPE: + g_value_set_string (value, self->priv->display_type); + break; case PROP_DISPLAY_NUMBER: g_value_set_int (value, self->priv->display_number); break; @@ -1523,6 +1558,13 @@ gdm_slave_class_init (GdmSlaveClass *klass) NULL, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); g_object_class_install_property (object_class, + PROP_DISPLAY_TYPE, + g_param_spec_string ("display-type", + "display type", + "display type", + NULL, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); + g_object_class_install_property (object_class, PROP_DISPLAY_NUMBER, g_param_spec_int ("display-number", "display number", @@ -1614,6 +1656,7 @@ gdm_slave_finalize (GObject *object) g_free (slave->priv->id); g_free (slave->priv->display_id); g_free (slave->priv->display_name); + g_free (slave->priv->display_type); g_free (slave->priv->display_hostname); g_free (slave->priv->display_seat_id); g_free (slave->priv->display_x11_authority_file); diff --git a/daemon/test-session.c b/daemon/test-session.c index c6a158c9..f59ccf36 100644 --- a/daemon/test-session.c +++ b/daemon/test-session.c @@ -244,6 +244,7 @@ main (int argc, g_debug ("creating instance of GdmSessionDirect object..."); session = gdm_session_direct_new ("/org/gnome/DisplayManager/Display1", ":0", + "", g_get_host_name (), ttyname (STDIN_FILENO), getenv("XAUTHORITY"), |