diff options
author | William Jon McCann <mccann@jhu.edu> | 2007-03-05 12:12:59 -0500 |
---|---|---|
committer | William Jon McCann <mccann@jhu.edu> | 2007-03-05 12:12:59 -0500 |
commit | 4b245b3113480d495440e1b7d32eb4dc6d564c8c (patch) | |
tree | 7758e3659e5cfa2da5679555358f619f33ce8e2b /src | |
parent | 67fa39aacf65117a85533035a71ee09b184003dc (diff) |
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).
Diffstat (limited to 'src')
-rw-r--r-- | src/ck-session.c | 60 | ||||
-rw-r--r-- | src/ck-session.h | 172 | ||||
-rw-r--r-- | src/ck-session.xml | 3 |
3 files changed, 143 insertions, 92 deletions
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; @@ -476,6 +478,20 @@ ck_session_get_display_device (CkSession *session, } 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, GError **error) @@ -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; } @@ -623,6 +639,19 @@ ck_session_set_display_device (CkSession *session, } 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, GError **error) @@ -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); @@ -846,6 +881,13 @@ ck_session_class_init (CkSessionClass *klass) 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", "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); diff --git a/src/ck-session.h b/src/ck-session.h index 2486371..392e219 100644 --- a/src/ck-session.h +++ b/src/ck-session.h @@ -66,97 +66,103 @@ typedef enum #define CK_SESSION_ERROR ck_session_error_quark () -GQuark ck_session_error_quark (void); -GType ck_session_get_type (void); -CkSession * ck_session_new (const char *ssid, - const char *cookie); -CkSession * ck_session_new_with_parameters (const char *ssid, - const char *cookie, - const GPtrArray *parameters); - -gboolean ck_session_set_active (CkSession *session, - gboolean active, - GError **error); -gboolean ck_session_set_is_local (CkSession *session, - gboolean is_local, - GError **error); -gboolean ck_session_set_id (CkSession *session, - const char *ssid, - GError **error); -gboolean ck_session_set_cookie (CkSession *session, - const char *cookie, - GError **error); -gboolean ck_session_set_seat_id (CkSession *session, - const char *sid, - GError **error); -gboolean ck_session_set_user (CkSession *session, - guint uid, - GError **error); -gboolean ck_session_set_x11_display (CkSession *session, - const char *xdisplay, - GError **error); -gboolean ck_session_set_display_device (CkSession *session, - const char *device, - GError **error); -gboolean ck_session_set_host_name (CkSession *session, - const char *host_name, - GError **error); -gboolean ck_session_set_session_type (CkSession *session, - const char *type, - GError **error); +GQuark ck_session_error_quark (void); +GType ck_session_get_type (void); +CkSession * ck_session_new (const char *ssid, + const char *cookie); +CkSession * ck_session_new_with_parameters (const char *ssid, + const char *cookie, + const GPtrArray *parameters); + +gboolean ck_session_set_active (CkSession *session, + gboolean active, + GError **error); +gboolean ck_session_set_is_local (CkSession *session, + gboolean is_local, + GError **error); +gboolean ck_session_set_id (CkSession *session, + const char *ssid, + GError **error); +gboolean ck_session_set_cookie (CkSession *session, + const char *cookie, + GError **error); +gboolean ck_session_set_seat_id (CkSession *session, + const char *sid, + GError **error); +gboolean ck_session_set_user (CkSession *session, + guint uid, + GError **error); +gboolean ck_session_set_x11_display (CkSession *session, + const char *xdisplay, + GError **error); +gboolean ck_session_set_x11_display_device (CkSession *session, + const char *xdisplay, + GError **error); +gboolean ck_session_set_display_device (CkSession *session, + const char *device, + GError **error); +gboolean ck_session_set_host_name (CkSession *session, + const char *host_name, + GError **error); +gboolean ck_session_set_session_type (CkSession *session, + const char *type, + GError **error); /* Exported methods */ /* Authoritative properties */ -gboolean ck_session_get_id (CkSession *session, - char **ssid, - GError **error); -gboolean ck_session_get_seat_id (CkSession *session, - char **sid, - GError **error); -gboolean ck_session_is_active (CkSession *session, - gboolean *active, - GError **error); -gboolean ck_session_is_local (CkSession *session, - gboolean *local, - GError **error); -gboolean ck_session_get_user (CkSession *session, - guint *uid, - GError **error); -gboolean ck_session_get_x11_display (CkSession *session, - char **display, - GError **error); -gboolean ck_session_get_display_device (CkSession *session, - char **display, - GError **error); -gboolean ck_session_get_session_type (CkSession *session, - char **type, - GError **error); -gboolean ck_session_get_host_name (CkSession *session, - char **host_name, - GError **error); -gboolean ck_session_get_creation_time (CkSession *session, - char **iso8601_datetime, - GError **error); +gboolean ck_session_get_id (CkSession *session, + char **ssid, + GError **error); +gboolean ck_session_get_seat_id (CkSession *session, + char **sid, + GError **error); +gboolean ck_session_is_active (CkSession *session, + gboolean *active, + GError **error); +gboolean ck_session_is_local (CkSession *session, + gboolean *local, + GError **error); +gboolean ck_session_get_user (CkSession *session, + guint *uid, + GError **error); +gboolean ck_session_get_x11_display (CkSession *session, + char **display, + GError **error); +gboolean ck_session_get_x11_display_device (CkSession *session, + char **display, + GError **error); +gboolean ck_session_get_display_device (CkSession *session, + char **display, + GError **error); +gboolean ck_session_get_session_type (CkSession *session, + char **type, + GError **error); +gboolean ck_session_get_host_name (CkSession *session, + char **host_name, + GError **error); +gboolean ck_session_get_creation_time (CkSession *session, + char **iso8601_datetime, + GError **error); /* Non-authoritative properties */ -gboolean ck_session_get_idle_hint (CkSession *session, - gboolean *idle_hint, - GError **error); -gboolean ck_session_get_idle_since_hint (CkSession *session, - char **iso8601_datetime, - GError **error); -gboolean ck_session_set_idle_hint (CkSession *session, - gboolean idle_hint, - DBusGMethodInvocation *context); +gboolean ck_session_get_idle_hint (CkSession *session, + gboolean *idle_hint, + GError **error); +gboolean ck_session_get_idle_since_hint (CkSession *session, + char **iso8601_datetime, + GError **error); +gboolean ck_session_set_idle_hint (CkSession *session, + gboolean idle_hint, + DBusGMethodInvocation *context); /* Privileged actions */ -gboolean ck_session_activate (CkSession *session, - DBusGMethodInvocation *context); -gboolean ck_session_lock (CkSession *session, - DBusGMethodInvocation *context); -gboolean ck_session_unlock (CkSession *session, - DBusGMethodInvocation *context); +gboolean ck_session_activate (CkSession *session, + DBusGMethodInvocation *context); +gboolean ck_session_lock (CkSession *session, + DBusGMethodInvocation *context); +gboolean ck_session_unlock (CkSession *session, + DBusGMethodInvocation *context); G_END_DECLS diff --git a/src/ck-session.xml b/src/ck-session.xml index 71ba983..5a993cb 100644 --- a/src/ck-session.xml +++ b/src/ck-session.xml @@ -18,6 +18,9 @@ <method name="GetX11Display"> <arg name="display" direction="out" type="s"/> </method> + <method name="GetX11DisplayDevice"> + <arg name="x11_display_device" direction="out" type="s"/> + </method> <method name="GetDisplayDevice"> <arg name="display_device" direction="out" type="s"/> </method> |