summaryrefslogtreecommitdiff
path: root/daemon/gdm-session-direct.c
diff options
context:
space:
mode:
Diffstat (limited to 'daemon/gdm-session-direct.c')
-rw-r--r--daemon/gdm-session-direct.c60
1 files changed, 60 insertions, 0 deletions
diff --git a/daemon/gdm-session-direct.c b/daemon/gdm-session-direct.c
index bb2bff83..9f750f25 100644
--- a/daemon/gdm-session-direct.c
+++ b/daemon/gdm-session-direct.c
@@ -103,6 +103,7 @@ struct _GdmSessionDirectPrivate
char *display_name;
char *display_hostname;
char *display_device;
+ char *display_seat_id;
char *display_x11_authority_file;
gboolean display_is_local;
@@ -121,6 +122,7 @@ enum {
PROP_DISPLAY_HOSTNAME,
PROP_DISPLAY_IS_LOCAL,
PROP_DISPLAY_DEVICE,
+ PROP_DISPLAY_SEAT_ID,
PROP_DISPLAY_X11_AUTHORITY_FILE,
PROP_USER_X11_AUTHORITY_FILE,
};
@@ -1389,6 +1391,7 @@ do_introspect (DBusConnection *connection,
" <arg name=\"service_name\" type=\"s\"/>\n"
" <arg name=\"x11_display_name\" type=\"s\"/>\n"
" <arg name=\"display_device\" type=\"s\"/>\n"
+ " <arg name=\"display_seat\" type=\"s\"/>\n"
" <arg name=\"hostname\" type=\"s\"/>\n"
" <arg name=\"x11_authority_file\" type=\"s\"/>\n"
" </signal>\n"
@@ -1396,6 +1399,7 @@ do_introspect (DBusConnection *connection,
" <arg name=\"service_name\" type=\"s\"/>\n"
" <arg name=\"x11_display_name\" type=\"s\"/>\n"
" <arg name=\"display_device\" type=\"s\"/>\n"
+ " <arg name=\"display_seat\" type=\"s\"/>\n"
" <arg name=\"hostname\" type=\"s\"/>\n"
" <arg name=\"x11_authority_file\" type=\"s\"/>\n"
" <arg name=\"username\" type=\"s\"/>\n"
@@ -1404,6 +1408,7 @@ do_introspect (DBusConnection *connection,
" <arg name=\"service_name\" type=\"s\"/>\n"
" <arg name=\"x11_display_name\" type=\"s\"/>\n"
" <arg name=\"display_device\" type=\"s\"/>\n"
+ " <arg name=\"display_seat\" type=\"s\"/>\n"
" <arg name=\"hostname\" type=\"s\"/>\n"
" <arg name=\"x11_authority_file\" type=\"s\"/>\n"
" <arg name=\"log_file\" type=\"s\"/>\n"
@@ -1975,6 +1980,7 @@ send_setup (GdmSessionDirect *session,
DBusMessageIter iter;
const char *display_name;
const char *display_device;
+ const char *display_seat_id;
const char *display_hostname;
const char *display_x11_authority_file;
GdmSessionConversation *conversation;
@@ -1996,6 +2002,11 @@ send_setup (GdmSessionDirect *session,
} else {
display_device = "";
}
+ if (session->priv->display_seat_id != NULL) {
+ display_seat_id = session->priv->display_seat_id;
+ } else {
+ display_seat_id = "";
+ }
if (session->priv->display_x11_authority_file != NULL) {
display_x11_authority_file = session->priv->display_x11_authority_file;
} else {
@@ -2012,6 +2023,7 @@ send_setup (GdmSessionDirect *session,
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_device);
+ dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &display_seat_id);
dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &display_hostname);
dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &display_x11_authority_file);
@@ -2031,6 +2043,7 @@ send_setup_for_user (GdmSessionDirect *session,
DBusMessageIter iter;
const char *display_name;
const char *display_device;
+ const char *display_seat_id;
const char *display_hostname;
const char *display_x11_authority_file;
const char *selected_user;
@@ -2053,6 +2066,11 @@ send_setup_for_user (GdmSessionDirect *session,
} else {
display_device = "";
}
+ if (session->priv->display_seat_id != NULL) {
+ display_seat_id = session->priv->display_seat_id;
+ } else {
+ display_seat_id = "";
+ }
if (session->priv->display_x11_authority_file != NULL) {
display_x11_authority_file = session->priv->display_x11_authority_file;
} else {
@@ -2074,6 +2092,7 @@ send_setup_for_user (GdmSessionDirect *session,
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_device);
+ dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &display_seat_id);
dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &display_hostname);
dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &display_x11_authority_file);
dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &selected_user);
@@ -2095,6 +2114,7 @@ send_setup_for_program (GdmSessionDirect *session,
DBusMessageIter iter;
const char *display_name;
const char *display_device;
+ const char *display_seat_id;
const char *display_hostname;
const char *display_x11_authority_file;
GdmSessionConversation *conversation;
@@ -2116,6 +2136,11 @@ send_setup_for_program (GdmSessionDirect *session,
} else {
display_device = "";
}
+ if (session->priv->display_seat_id != NULL) {
+ display_seat_id = session->priv->display_seat_id;
+ } else {
+ display_seat_id = "";
+ }
if (session->priv->display_x11_authority_file != NULL) {
display_x11_authority_file = session->priv->display_x11_authority_file;
} else {
@@ -2132,6 +2157,7 @@ send_setup_for_program (GdmSessionDirect *session,
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_device);
+ dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &display_seat_id);
dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &display_hostname);
dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &display_x11_authority_file);
dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &log_file);
@@ -2587,6 +2613,14 @@ gdm_session_direct_get_display_device (GdmSessionDirect *session)
return g_strdup (session->priv->display_device);
}
+char *
+gdm_session_direct_get_display_seat_id (GdmSessionDirect *session)
+{
+ g_return_val_if_fail (session != NULL, NULL);
+
+ return g_strdup (session->priv->display_seat_id);
+}
+
gboolean
gdm_session_direct_bypasses_xsession (GdmSessionDirect *session_direct)
{
@@ -2754,6 +2788,14 @@ _gdm_session_direct_set_display_device (GdmSessionDirect *session,
}
static void
+_gdm_session_direct_set_display_seat_id (GdmSessionDirect *session,
+ const char *name)
+{
+ g_free (session->priv->display_seat_id);
+ session->priv->display_seat_id = g_strdup (name);
+}
+
+static void
_gdm_session_direct_set_user_x11_authority_file (GdmSessionDirect *session,
const char *name)
{
@@ -2799,6 +2841,9 @@ gdm_session_direct_set_property (GObject *object,
case PROP_DISPLAY_DEVICE:
_gdm_session_direct_set_display_device (self, g_value_get_string (value));
break;
+ case PROP_DISPLAY_SEAT_ID:
+ _gdm_session_direct_set_display_seat_id (self, g_value_get_string (value));
+ break;
case PROP_USER_X11_AUTHORITY_FILE:
_gdm_session_direct_set_user_x11_authority_file (self, g_value_get_string (value));
break;
@@ -2837,6 +2882,9 @@ gdm_session_direct_get_property (GObject *object,
case PROP_DISPLAY_DEVICE:
g_value_set_string (value, self->priv->display_device);
break;
+ case PROP_DISPLAY_SEAT_ID:
+ g_value_set_string (value, self->priv->display_seat_id);
+ break;
case PROP_USER_X11_AUTHORITY_FILE:
g_value_set_string (value, self->priv->user_x11_authority_file);
break;
@@ -2875,6 +2923,9 @@ gdm_session_direct_dispose (GObject *object)
g_free (session->priv->display_device);
session->priv->display_device = NULL;
+ g_free (session->priv->display_seat_id);
+ session->priv->display_seat_id = NULL;
+
g_free (session->priv->display_x11_authority_file);
session->priv->display_x11_authority_file = NULL;
@@ -3063,6 +3114,13 @@ gdm_session_direct_class_init (GdmSessionDirectClass *session_class)
NULL,
G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
+ g_object_class_install_property (object_class,
+ PROP_DISPLAY_SEAT_ID,
+ g_param_spec_string ("display-seat-id",
+ "display seat id",
+ "display seat id",
+ NULL,
+ G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
dbus_g_object_type_install_info (GDM_TYPE_SESSION_DIRECT, &dbus_glib_gdm_session_direct_object_info);
}
@@ -3072,6 +3130,7 @@ gdm_session_direct_new (const char *display_id,
const char *display_name,
const char *display_hostname,
const char *display_device,
+ const char *display_seat_id,
const char *display_x11_authority_file,
gboolean display_is_local)
{
@@ -3082,6 +3141,7 @@ gdm_session_direct_new (const char *display_id,
"display-name", display_name,
"display-hostname", display_hostname,
"display-device", display_device,
+ "display-seat-id", display_seat_id,
"display-x11-authority-file", display_x11_authority_file,
"display-is-local", display_is_local,
NULL);