summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorWilliam Jon McCann <mccann@jhu.edu>2007-03-05 12:12:59 -0500
committerWilliam Jon McCann <mccann@jhu.edu>2007-03-05 12:12:59 -0500
commit4b245b3113480d495440e1b7d32eb4dc6d564c8c (patch)
tree7758e3659e5cfa2da5679555358f619f33ce8e2b /src
parent67fa39aacf65117a85533035a71ee09b184003dc (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.c60
-rw-r--r--src/ck-session.h172
-rw-r--r--src/ck-session.xml3
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>