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>  | 
