From 4b245b3113480d495440e1b7d32eb4dc6d564c8c Mon Sep 17 00:00:00 2001 From: William Jon McCann Date: Mon, 5 Mar 2007 12:12:59 -0500 Subject: add x11-display-device attribute In certain cases it is necessary to distinguish the display-device (tty of session leader) from the x11-display-device (tty of xorg process). --- src/ck-session.c | 60 +++++++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 51 insertions(+), 9 deletions(-) (limited to 'src/ck-session.c') diff --git a/src/ck-session.c b/src/ck-session.c index 44eaa2f..9d53072 100644 --- a/src/ck-session.c +++ b/src/ck-session.c @@ -51,7 +51,8 @@ struct CkSessionPrivate char *session_type; char *display_device; - char *xdisplay; + char *x11_display_device; + char *x11_display; char *host_name; guint uid; @@ -82,6 +83,7 @@ enum { PROP_COOKIE, PROP_USER, PROP_X11_DISPLAY, + PROP_X11_DISPLAY_DEVICE, PROP_DISPLAY_DEVICE, PROP_SESSION_TYPE, PROP_HOST_NAME, @@ -449,13 +451,13 @@ ck_session_get_user (CkSession *session, gboolean ck_session_get_x11_display (CkSession *session, - char **xdisplay, + char **x11_display, GError **error) { g_return_val_if_fail (CK_IS_SESSION (session), FALSE); - if (xdisplay != NULL) { - *xdisplay = g_strdup (session->priv->xdisplay); + if (x11_display != NULL) { + *x11_display = g_strdup (session->priv->x11_display); } return TRUE; @@ -475,6 +477,20 @@ ck_session_get_display_device (CkSession *session, return TRUE; } +gboolean +ck_session_get_x11_display_device (CkSession *session, + char **x11_display_device, + GError **error) +{ + g_return_val_if_fail (CK_IS_SESSION (session), FALSE); + + if (x11_display_device != NULL) { + *x11_display_device = g_strdup (session->priv->x11_display_device); + } + + return TRUE; +} + gboolean ck_session_get_host_name (CkSession *session, char **host_name, @@ -598,13 +614,13 @@ ck_session_set_user (CkSession *session, gboolean ck_session_set_x11_display (CkSession *session, - const char *xdisplay, + const char *x11_display, GError **error) { g_return_val_if_fail (CK_IS_SESSION (session), FALSE); - g_free (session->priv->xdisplay); - session->priv->xdisplay = g_strdup (xdisplay); + g_free (session->priv->x11_display); + session->priv->x11_display = g_strdup (x11_display); return TRUE; } @@ -622,6 +638,19 @@ ck_session_set_display_device (CkSession *session, return TRUE; } +gboolean +ck_session_set_x11_display_device (CkSession *session, + const char *x11_display_device, + GError **error) +{ + g_return_val_if_fail (CK_IS_SESSION (session), FALSE); + + g_free (session->priv->x11_display_device); + session->priv->x11_display_device = g_strdup (x11_display_device); + + return TRUE; +} + gboolean ck_session_set_host_name (CkSession *session, const char *host_name, @@ -677,6 +706,9 @@ ck_session_set_property (GObject *object, case PROP_X11_DISPLAY: ck_session_set_x11_display (self, g_value_get_string (value), NULL); break; + case PROP_X11_DISPLAY_DEVICE: + ck_session_set_x11_display_device (self, g_value_get_string (value), NULL); + break; case PROP_DISPLAY_DEVICE: ck_session_set_display_device (self, g_value_get_string (value), NULL); break; @@ -722,7 +754,10 @@ ck_session_get_property (GObject *object, g_value_set_string (value, self->priv->session_type); break; case PROP_X11_DISPLAY: - g_value_set_string (value, self->priv->xdisplay); + g_value_set_string (value, self->priv->x11_display); + break; + case PROP_X11_DISPLAY_DEVICE: + g_value_set_string (value, self->priv->x11_display_device); break; case PROP_DISPLAY_DEVICE: g_value_set_string (value, self->priv->display_device); @@ -845,6 +880,13 @@ ck_session_class_init (CkSessionClass *klass) "X11 Display", NULL, G_PARAM_READWRITE)); + g_object_class_install_property (object_class, + PROP_X11_DISPLAY_DEVICE, + g_param_spec_string ("x11-display-device", + "x11-display-device", + "X11 Display device", + NULL, + G_PARAM_READWRITE)); g_object_class_install_property (object_class, PROP_DISPLAY_DEVICE, g_param_spec_string ("display-device", @@ -907,7 +949,7 @@ ck_session_finalize (GObject *object) g_free (session->priv->cookie); g_free (session->priv->seat_id); g_free (session->priv->session_type); - g_free (session->priv->xdisplay); + g_free (session->priv->x11_display); g_free (session->priv->host_name); G_OBJECT_CLASS (ck_session_parent_class)->finalize (object); -- cgit