diff options
Diffstat (limited to 'daemon/gdm-slave.c')
-rw-r--r-- | daemon/gdm-slave.c | 870 |
1 files changed, 435 insertions, 435 deletions
diff --git a/daemon/gdm-slave.c b/daemon/gdm-slave.c index 4372fe14..1e4fdd2d 100644 --- a/daemon/gdm-slave.c +++ b/daemon/gdm-slave.c @@ -1,4 +1,4 @@ -/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- * * Copyright (C) 2007 William Jon McCann <mccann@jhu.edu> * @@ -54,344 +54,344 @@ #define GDM_SLAVE_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GDM_TYPE_SLAVE, GdmSlavePrivate)) -#define GDM_DBUS_NAME "org.gnome.DisplayManager" +#define GDM_DBUS_NAME "org.gnome.DisplayManager" #define GDM_DBUS_DISPLAY_INTERFACE "org.gnome.DisplayManager.Display" #define MAX_CONNECT_ATTEMPTS 10 struct GdmSlavePrivate { - char *id; - GPid pid; + char *id; + GPid pid; guint output_watch_id; guint error_watch_id; - GPid server_pid; - Display *server_display; - guint connection_attempts; - - /* cached display values */ - char *display_id; - char *display_name; - int *display_number; - char *display_hostname; - gboolean display_is_local; - gboolean display_is_parented; - char *display_x11_authority_file; - char *display_x11_cookie; - char *parent_display_name; - char *parent_display_x11_authority_file; - - /* user selected */ - char *selected_session; - char *selected_language; - - GdmServer *server; - GdmGreeterProxy *greeter; - GdmSession *session; - DBusGProxy *display_proxy; + GPid server_pid; + Display *server_display; + guint connection_attempts; + + /* cached display values */ + char *display_id; + char *display_name; + int *display_number; + char *display_hostname; + gboolean display_is_local; + gboolean display_is_parented; + char *display_x11_authority_file; + char *display_x11_cookie; + char *parent_display_name; + char *parent_display_x11_authority_file; + + /* user selected */ + char *selected_session; + char *selected_language; + + GdmServer *server; + GdmGreeterProxy *greeter; + GdmSession *session; + DBusGProxy *display_proxy; DBusGConnection *connection; }; enum { - PROP_0, - PROP_DISPLAY_ID, - PROP_DISPLAY_NAME, - PROP_DISPLAY_NUMBER, - PROP_DISPLAY_HOSTNAME, - PROP_DISPLAY_IS_LOCAL, - PROP_DISPLAY_X11_AUTHORITY_FILE, - PROP_DISPLAY_X11_COOKIE, + PROP_0, + PROP_DISPLAY_ID, + PROP_DISPLAY_NAME, + PROP_DISPLAY_NUMBER, + PROP_DISPLAY_HOSTNAME, + PROP_DISPLAY_IS_LOCAL, + PROP_DISPLAY_X11_AUTHORITY_FILE, + PROP_DISPLAY_X11_COOKIE, }; enum { - STOPPED, - LAST_SIGNAL + STOPPED, + LAST_SIGNAL }; static guint signals [LAST_SIGNAL] = { 0, }; -static void gdm_slave_class_init (GdmSlaveClass *klass); -static void gdm_slave_init (GdmSlave *slave); -static void gdm_slave_finalize (GObject *object); +static void gdm_slave_class_init (GdmSlaveClass *klass); +static void gdm_slave_init (GdmSlave *slave); +static void gdm_slave_finalize (GObject *object); G_DEFINE_ABSTRACT_TYPE (GdmSlave, gdm_slave, G_TYPE_OBJECT) static void display_proxy_destroyed_cb (DBusGProxy *display_proxy, - GdmSlave *slave) + GdmSlave *slave) { - g_debug ("Disconnected from display"); + g_debug ("Disconnected from display"); - slave->priv->display_proxy = NULL; + slave->priv->display_proxy = NULL; } static gboolean gdm_slave_real_start (GdmSlave *slave) { - gboolean res; - char *id; - GError *error; - - g_debug ("Starting slave"); - - g_assert (slave->priv->display_proxy == NULL); - - g_debug ("Creating proxy for %s", slave->priv->display_id); - error = NULL; - slave->priv->display_proxy = dbus_g_proxy_new_for_name_owner (slave->priv->connection, - GDM_DBUS_NAME, - slave->priv->display_id, - GDM_DBUS_DISPLAY_INTERFACE, - &error); - g_signal_connect (slave->priv->display_proxy, - "destroy", - G_CALLBACK (display_proxy_destroyed_cb), - slave); - - if (slave->priv->display_proxy == NULL) { - if (error != NULL) { - g_warning ("Failed to create display proxy %s: %s", slave->priv->display_id, error->message); - g_error_free (error); - } else { - g_warning ("Unable to create display proxy"); - } - return FALSE; - } - - /* Make sure display ID works */ - error = NULL; - res = dbus_g_proxy_call (slave->priv->display_proxy, - "GetId", - &error, - G_TYPE_INVALID, - DBUS_TYPE_G_OBJECT_PATH, &id, - G_TYPE_INVALID); - if (! res) { - if (error != NULL) { - g_warning ("Failed to get display id %s: %s", slave->priv->display_id, error->message); - g_error_free (error); - } else { - g_warning ("Failed to get display id %s", slave->priv->display_id); - } - - return FALSE; - } - - g_debug ("Got display id: %s", id); - - if (strcmp (id, slave->priv->display_id) != 0) { - g_critical ("Display ID doesn't match"); - exit (1); - } - - /* cache some values up front */ - error = NULL; - res = dbus_g_proxy_call (slave->priv->display_proxy, - "IsLocal", - &error, - G_TYPE_INVALID, - G_TYPE_BOOLEAN, &slave->priv->display_is_local, - G_TYPE_INVALID); - if (! res) { - if (error != NULL) { - g_warning ("Failed to get value: %s", error->message); - g_error_free (error); - } else { - g_warning ("Failed to get value"); - } - - return FALSE; - } - - error = NULL; - res = dbus_g_proxy_call (slave->priv->display_proxy, - "GetX11DisplayName", - &error, - G_TYPE_INVALID, - G_TYPE_STRING, &slave->priv->display_name, - G_TYPE_INVALID); - if (! res) { - if (error != NULL) { - g_warning ("Failed to get value: %s", error->message); - g_error_free (error); - } else { - g_warning ("Failed to get value"); - } - - return FALSE; - } - - error = NULL; - res = dbus_g_proxy_call (slave->priv->display_proxy, - "GetX11DisplayNumber", - &error, - G_TYPE_INVALID, - G_TYPE_INT, &slave->priv->display_number, - G_TYPE_INVALID); - if (! res) { - if (error != NULL) { - g_warning ("Failed to get value: %s", error->message); - g_error_free (error); - } else { - g_warning ("Failed to get value"); - } - - return FALSE; - } - - error = NULL; - res = dbus_g_proxy_call (slave->priv->display_proxy, - "GetRemoteHostname", - &error, - G_TYPE_INVALID, - G_TYPE_STRING, &slave->priv->display_hostname, - G_TYPE_INVALID); - if (! res) { - if (error != NULL) { - g_warning ("Failed to get value: %s", error->message); - g_error_free (error); - } else { - g_warning ("Failed to get value"); - } - - return FALSE; - } - - error = NULL; - res = dbus_g_proxy_call (slave->priv->display_proxy, - "GetX11Cookie", - &error, - G_TYPE_INVALID, - G_TYPE_STRING, &slave->priv->display_x11_cookie, - G_TYPE_INVALID); - if (! res) { - if (error != NULL) { - g_warning ("Failed to get value: %s", error->message); - g_error_free (error); - } else { - g_warning ("Failed to get value"); - } - - return FALSE; - } - - error = NULL; - res = dbus_g_proxy_call (slave->priv->display_proxy, - "GetX11AuthorityFile", - &error, - G_TYPE_INVALID, - G_TYPE_STRING, &slave->priv->display_x11_authority_file, - G_TYPE_INVALID); - if (! res) { - if (error != NULL) { - g_warning ("Failed to get value: %s", error->message); - g_error_free (error); - } else { - g_warning ("Failed to get value"); - } - - return FALSE; - } - - return TRUE; + gboolean res; + char *id; + GError *error; + + g_debug ("Starting slave"); + + g_assert (slave->priv->display_proxy == NULL); + + g_debug ("Creating proxy for %s", slave->priv->display_id); + error = NULL; + slave->priv->display_proxy = dbus_g_proxy_new_for_name_owner (slave->priv->connection, + GDM_DBUS_NAME, + slave->priv->display_id, + GDM_DBUS_DISPLAY_INTERFACE, + &error); + g_signal_connect (slave->priv->display_proxy, + "destroy", + G_CALLBACK (display_proxy_destroyed_cb), + slave); + + if (slave->priv->display_proxy == NULL) { + if (error != NULL) { + g_warning ("Failed to create display proxy %s: %s", slave->priv->display_id, error->message); + g_error_free (error); + } else { + g_warning ("Unable to create display proxy"); + } + return FALSE; + } + + /* Make sure display ID works */ + error = NULL; + res = dbus_g_proxy_call (slave->priv->display_proxy, + "GetId", + &error, + G_TYPE_INVALID, + DBUS_TYPE_G_OBJECT_PATH, &id, + G_TYPE_INVALID); + if (! res) { + if (error != NULL) { + g_warning ("Failed to get display id %s: %s", slave->priv->display_id, error->message); + g_error_free (error); + } else { + g_warning ("Failed to get display id %s", slave->priv->display_id); + } + + return FALSE; + } + + g_debug ("Got display id: %s", id); + + if (strcmp (id, slave->priv->display_id) != 0) { + g_critical ("Display ID doesn't match"); + exit (1); + } + + /* cache some values up front */ + error = NULL; + res = dbus_g_proxy_call (slave->priv->display_proxy, + "IsLocal", + &error, + G_TYPE_INVALID, + G_TYPE_BOOLEAN, &slave->priv->display_is_local, + G_TYPE_INVALID); + if (! res) { + if (error != NULL) { + g_warning ("Failed to get value: %s", error->message); + g_error_free (error); + } else { + g_warning ("Failed to get value"); + } + + return FALSE; + } + + error = NULL; + res = dbus_g_proxy_call (slave->priv->display_proxy, + "GetX11DisplayName", + &error, + G_TYPE_INVALID, + G_TYPE_STRING, &slave->priv->display_name, + G_TYPE_INVALID); + if (! res) { + if (error != NULL) { + g_warning ("Failed to get value: %s", error->message); + g_error_free (error); + } else { + g_warning ("Failed to get value"); + } + + return FALSE; + } + + error = NULL; + res = dbus_g_proxy_call (slave->priv->display_proxy, + "GetX11DisplayNumber", + &error, + G_TYPE_INVALID, + G_TYPE_INT, &slave->priv->display_number, + G_TYPE_INVALID); + if (! res) { + if (error != NULL) { + g_warning ("Failed to get value: %s", error->message); + g_error_free (error); + } else { + g_warning ("Failed to get value"); + } + + return FALSE; + } + + error = NULL; + res = dbus_g_proxy_call (slave->priv->display_proxy, + "GetRemoteHostname", + &error, + G_TYPE_INVALID, + G_TYPE_STRING, &slave->priv->display_hostname, + G_TYPE_INVALID); + if (! res) { + if (error != NULL) { + g_warning ("Failed to get value: %s", error->message); + g_error_free (error); + } else { + g_warning ("Failed to get value"); + } + + return FALSE; + } + + error = NULL; + res = dbus_g_proxy_call (slave->priv->display_proxy, + "GetX11Cookie", + &error, + G_TYPE_INVALID, + G_TYPE_STRING, &slave->priv->display_x11_cookie, + G_TYPE_INVALID); + if (! res) { + if (error != NULL) { + g_warning ("Failed to get value: %s", error->message); + g_error_free (error); + } else { + g_warning ("Failed to get value"); + } + + return FALSE; + } + + error = NULL; + res = dbus_g_proxy_call (slave->priv->display_proxy, + "GetX11AuthorityFile", + &error, + G_TYPE_INVALID, + G_TYPE_STRING, &slave->priv->display_x11_authority_file, + G_TYPE_INVALID); + if (! res) { + if (error != NULL) { + g_warning ("Failed to get value: %s", error->message); + g_error_free (error); + } else { + g_warning ("Failed to get value"); + } + + return FALSE; + } + + return TRUE; } static gboolean gdm_slave_real_stop (GdmSlave *slave) { - g_debug ("Stopping slave"); + g_debug ("Stopping slave"); - if (slave->priv->display_proxy != NULL) { - g_object_unref (slave->priv->display_proxy); - } + if (slave->priv->display_proxy != NULL) { + g_object_unref (slave->priv->display_proxy); + } - return TRUE; + return TRUE; } gboolean gdm_slave_start (GdmSlave *slave) { - gboolean ret; + gboolean ret; - g_return_val_if_fail (GDM_IS_SLAVE (slave), FALSE); + g_return_val_if_fail (GDM_IS_SLAVE (slave), FALSE); - g_debug ("starting slave"); + g_debug ("starting slave"); - g_object_ref (slave); - ret = GDM_SLAVE_GET_CLASS (slave)->start (slave); - g_object_unref (slave); + g_object_ref (slave); + ret = GDM_SLAVE_GET_CLASS (slave)->start (slave); + g_object_unref (slave); - return ret; + return ret; } gboolean gdm_slave_stop (GdmSlave *slave) { - gboolean ret; + gboolean ret; - g_return_val_if_fail (GDM_IS_SLAVE (slave), FALSE); + g_return_val_if_fail (GDM_IS_SLAVE (slave), FALSE); - g_debug ("stopping slave"); + g_debug ("stopping slave"); - g_object_ref (slave); - ret = GDM_SLAVE_GET_CLASS (slave)->stop (slave); - g_object_unref (slave); + g_object_ref (slave); + ret = GDM_SLAVE_GET_CLASS (slave)->stop (slave); + g_object_unref (slave); - return ret; + return ret; } void gdm_slave_stopped (GdmSlave *slave) { - g_return_if_fail (GDM_IS_SLAVE (slave)); + g_return_if_fail (GDM_IS_SLAVE (slave)); - g_signal_emit (slave, signals [STOPPED], 0); + g_signal_emit (slave, signals [STOPPED], 0); } gboolean gdm_slave_add_user_authorization (GdmSlave *slave, - const char *username, - char **filenamep) + const char *username, + char **filenamep) { - gboolean res; - GError *error; - char *filename; - - filename = NULL; - - if (filenamep != NULL) { - *filenamep = NULL; - } - - error = NULL; - res = dbus_g_proxy_call (slave->priv->display_proxy, - "AddUserAuthorization", - &error, - G_TYPE_STRING, username, - G_TYPE_INVALID, - G_TYPE_STRING, &filename, - G_TYPE_INVALID); - if (filenamep != NULL) { - *filenamep = g_strdup (filename); - } - g_free (filename); - - if (! res) { - if (error != NULL) { - g_warning ("Failed to add user authorization: %s", error->message); - g_error_free (error); - } else { - g_warning ("Failed to add user authorization"); - } - } - - return res; + gboolean res; + GError *error; + char *filename; + + filename = NULL; + + if (filenamep != NULL) { + *filenamep = NULL; + } + + error = NULL; + res = dbus_g_proxy_call (slave->priv->display_proxy, + "AddUserAuthorization", + &error, + G_TYPE_STRING, username, + G_TYPE_INVALID, + G_TYPE_STRING, &filename, + G_TYPE_INVALID); + if (filenamep != NULL) { + *filenamep = g_strdup (filename); + } + g_free (filename); + + if (! res) { + if (error != NULL) { + g_warning ("Failed to add user authorization: %s", error->message); + g_error_free (error); + } else { + g_warning ("Failed to add user authorization"); + } + } + + return res; } static void _gdm_slave_set_display_id (GdmSlave *slave, - const char *id) + const char *id) { g_free (slave->priv->display_id); slave->priv->display_id = g_strdup (id); @@ -399,7 +399,7 @@ _gdm_slave_set_display_id (GdmSlave *slave, static void _gdm_slave_set_display_name (GdmSlave *slave, - const char *name) + const char *name) { g_free (slave->priv->display_name); slave->priv->display_name = g_strdup (name); @@ -407,14 +407,14 @@ _gdm_slave_set_display_name (GdmSlave *slave, static void _gdm_slave_set_display_number (GdmSlave *slave, - int number) + int number) { slave->priv->display_number = number; } static void _gdm_slave_set_display_hostname (GdmSlave *slave, - const char *name) + const char *name) { g_free (slave->priv->display_hostname); slave->priv->display_hostname = g_strdup (name); @@ -422,7 +422,7 @@ _gdm_slave_set_display_hostname (GdmSlave *slave, static void _gdm_slave_set_display_x11_authority_file (GdmSlave *slave, - const char *name) + const char *name) { g_free (slave->priv->display_x11_authority_file); slave->priv->display_x11_authority_file = g_strdup (name); @@ -430,7 +430,7 @@ _gdm_slave_set_display_x11_authority_file (GdmSlave *slave, static void _gdm_slave_set_display_x11_cookie (GdmSlave *slave, - const char *name) + const char *name) { g_free (slave->priv->display_x11_cookie); slave->priv->display_x11_cookie = g_strdup (name); @@ -438,85 +438,85 @@ _gdm_slave_set_display_x11_cookie (GdmSlave *slave, static void _gdm_slave_set_display_is_local (GdmSlave *slave, - gboolean is) + gboolean is) { slave->priv->display_is_local = is; } static void gdm_slave_set_property (GObject *object, - guint prop_id, - const GValue *value, - GParamSpec *pspec) + guint prop_id, + const GValue *value, + GParamSpec *pspec) { - GdmSlave *self; - - self = GDM_SLAVE (object); - - switch (prop_id) { - case PROP_DISPLAY_ID: - _gdm_slave_set_display_id (self, g_value_get_string (value)); - break; - case PROP_DISPLAY_NAME: - _gdm_slave_set_display_name (self, g_value_get_string (value)); - break; - case PROP_DISPLAY_NUMBER: - _gdm_slave_set_display_number (self, g_value_get_int (value)); - break; - case PROP_DISPLAY_HOSTNAME: - _gdm_slave_set_display_hostname (self, g_value_get_string (value)); - break; - case PROP_DISPLAY_X11_AUTHORITY_FILE: - _gdm_slave_set_display_x11_authority_file (self, g_value_get_string (value)); - break; - case PROP_DISPLAY_X11_COOKIE: - _gdm_slave_set_display_x11_cookie (self, g_value_get_string (value)); - break; - case PROP_DISPLAY_IS_LOCAL: - _gdm_slave_set_display_is_local (self, g_value_get_boolean (value)); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - break; - } + GdmSlave *self; + + self = GDM_SLAVE (object); + + switch (prop_id) { + case PROP_DISPLAY_ID: + _gdm_slave_set_display_id (self, g_value_get_string (value)); + break; + case PROP_DISPLAY_NAME: + _gdm_slave_set_display_name (self, g_value_get_string (value)); + break; + case PROP_DISPLAY_NUMBER: + _gdm_slave_set_display_number (self, g_value_get_int (value)); + break; + case PROP_DISPLAY_HOSTNAME: + _gdm_slave_set_display_hostname (self, g_value_get_string (value)); + break; + case PROP_DISPLAY_X11_AUTHORITY_FILE: + _gdm_slave_set_display_x11_authority_file (self, g_value_get_string (value)); + break; + case PROP_DISPLAY_X11_COOKIE: + _gdm_slave_set_display_x11_cookie (self, g_value_get_string (value)); + break; + case PROP_DISPLAY_IS_LOCAL: + _gdm_slave_set_display_is_local (self, g_value_get_boolean (value)); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } } static void gdm_slave_get_property (GObject *object, - guint prop_id, - GValue *value, - GParamSpec *pspec) + guint prop_id, + GValue *value, + GParamSpec *pspec) { - GdmSlave *self; - - self = GDM_SLAVE (object); - - switch (prop_id) { - case PROP_DISPLAY_ID: - g_value_set_string (value, self->priv->display_id); - break; - case PROP_DISPLAY_NAME: - g_value_set_string (value, self->priv->display_name); - break; - case PROP_DISPLAY_NUMBER: - g_value_set_int (value, self->priv->display_number); - break; - case PROP_DISPLAY_HOSTNAME: - g_value_set_string (value, self->priv->display_hostname); - break; - case PROP_DISPLAY_X11_AUTHORITY_FILE: - g_value_set_string (value, self->priv->display_x11_authority_file); - break; - case PROP_DISPLAY_X11_COOKIE: - g_value_set_string (value, self->priv->display_x11_cookie); - break; - case PROP_DISPLAY_IS_LOCAL: - g_value_set_boolean (value, self->priv->display_is_local); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - break; - } + GdmSlave *self; + + self = GDM_SLAVE (object); + + switch (prop_id) { + case PROP_DISPLAY_ID: + g_value_set_string (value, self->priv->display_id); + break; + case PROP_DISPLAY_NAME: + g_value_set_string (value, self->priv->display_name); + break; + case PROP_DISPLAY_NUMBER: + g_value_set_int (value, self->priv->display_number); + break; + case PROP_DISPLAY_HOSTNAME: + g_value_set_string (value, self->priv->display_hostname); + break; + case PROP_DISPLAY_X11_AUTHORITY_FILE: + g_value_set_string (value, self->priv->display_x11_authority_file); + break; + case PROP_DISPLAY_X11_COOKIE: + g_value_set_string (value, self->priv->display_x11_cookie); + break; + case PROP_DISPLAY_IS_LOCAL: + g_value_set_boolean (value, self->priv->display_is_local); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } } static gboolean @@ -541,31 +541,31 @@ register_slave (GdmSlave *slave) static GObject * gdm_slave_constructor (GType type, - guint n_construct_properties, - GObjectConstructParam *construct_properties) + guint n_construct_properties, + GObjectConstructParam *construct_properties) { GdmSlave *slave; GdmSlaveClass *klass; - gboolean res; - const char *id; + gboolean res; + const char *id; klass = GDM_SLAVE_CLASS (g_type_class_peek (GDM_TYPE_SLAVE)); slave = GDM_SLAVE (G_OBJECT_CLASS (gdm_slave_parent_class)->constructor (type, - n_construct_properties, - construct_properties)); + n_construct_properties, + construct_properties)); - id = NULL; - if (g_str_has_prefix (slave->priv->display_id, "/org/gnome/DisplayManager/Display")) { - id = slave->priv->display_id + strlen ("/org/gnome/DisplayManager/Display"); - } + id = NULL; + if (g_str_has_prefix (slave->priv->display_id, "/org/gnome/DisplayManager/Display")) { + id = slave->priv->display_id + strlen ("/org/gnome/DisplayManager/Display"); + } - slave->priv->id = g_strdup_printf ("/org/gnome/DisplayManager/Slave%s", id); - g_debug ("Registering %s", slave->priv->id); + slave->priv->id = g_strdup_printf ("/org/gnome/DisplayManager/Slave%s", id); + g_debug ("Registering %s", slave->priv->id); res = register_slave (slave); if (! res) { - g_warning ("Unable to register slave with system bus"); + g_warning ("Unable to register slave with system bus"); } return G_OBJECT (slave); @@ -574,106 +574,106 @@ gdm_slave_constructor (GType type, static void gdm_slave_class_init (GdmSlaveClass *klass) { - GObjectClass *object_class = G_OBJECT_CLASS (klass); + GObjectClass *object_class = G_OBJECT_CLASS (klass); - object_class->get_property = gdm_slave_get_property; - object_class->set_property = gdm_slave_set_property; + object_class->get_property = gdm_slave_get_property; + object_class->set_property = gdm_slave_set_property; object_class->constructor = gdm_slave_constructor; - object_class->finalize = gdm_slave_finalize; - - klass->start = gdm_slave_real_start; - klass->stop = gdm_slave_real_stop; - - g_type_class_add_private (klass, sizeof (GdmSlavePrivate)); - - g_object_class_install_property (object_class, - PROP_DISPLAY_ID, - g_param_spec_string ("display-id", - "id", - "id", - NULL, - G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); - g_object_class_install_property (object_class, - PROP_DISPLAY_NAME, - g_param_spec_string ("display-name", - "display name", - "display name", - NULL, - G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); - g_object_class_install_property (object_class, - PROP_DISPLAY_NUMBER, - g_param_spec_int ("display-number", - "display number", - "display number", - -1, - G_MAXINT, - -1, - G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); - g_object_class_install_property (object_class, - PROP_DISPLAY_HOSTNAME, - g_param_spec_string ("display-hostname", - "display hostname", - "display hostname", - NULL, - G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); - g_object_class_install_property (object_class, - PROP_DISPLAY_X11_AUTHORITY_FILE, - g_param_spec_string ("display-x11-authority-file", - "", - "", - NULL, - G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); - g_object_class_install_property (object_class, - PROP_DISPLAY_X11_COOKIE, - g_param_spec_string ("display-x11-cookie", - "", - "", - NULL, - G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); - g_object_class_install_property (object_class, - PROP_DISPLAY_IS_LOCAL, - g_param_spec_boolean ("display-is-local", - "display is local", - "display is local", - TRUE, - G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); - - signals [STOPPED] = - g_signal_new ("stopped", - G_TYPE_FROM_CLASS (object_class), - G_SIGNAL_RUN_LAST, - G_STRUCT_OFFSET (GdmSlaveClass, stopped), - NULL, - NULL, - g_cclosure_marshal_VOID__VOID, - G_TYPE_NONE, - 0); - - dbus_g_object_type_install_info (GDM_TYPE_SLAVE, &dbus_glib_gdm_slave_object_info); + object_class->finalize = gdm_slave_finalize; + + klass->start = gdm_slave_real_start; + klass->stop = gdm_slave_real_stop; + + g_type_class_add_private (klass, sizeof (GdmSlavePrivate)); + + g_object_class_install_property (object_class, + PROP_DISPLAY_ID, + g_param_spec_string ("display-id", + "id", + "id", + NULL, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); + g_object_class_install_property (object_class, + PROP_DISPLAY_NAME, + g_param_spec_string ("display-name", + "display name", + "display name", + NULL, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); + g_object_class_install_property (object_class, + PROP_DISPLAY_NUMBER, + g_param_spec_int ("display-number", + "display number", + "display number", + -1, + G_MAXINT, + -1, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); + g_object_class_install_property (object_class, + PROP_DISPLAY_HOSTNAME, + g_param_spec_string ("display-hostname", + "display hostname", + "display hostname", + NULL, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); + g_object_class_install_property (object_class, + PROP_DISPLAY_X11_AUTHORITY_FILE, + g_param_spec_string ("display-x11-authority-file", + "", + "", + NULL, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); + g_object_class_install_property (object_class, + PROP_DISPLAY_X11_COOKIE, + g_param_spec_string ("display-x11-cookie", + "", + "", + NULL, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); + g_object_class_install_property (object_class, + PROP_DISPLAY_IS_LOCAL, + g_param_spec_boolean ("display-is-local", + "display is local", + "display is local", + TRUE, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); + + signals [STOPPED] = + g_signal_new ("stopped", + G_TYPE_FROM_CLASS (object_class), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (GdmSlaveClass, stopped), + NULL, + NULL, + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, + 0); + + dbus_g_object_type_install_info (GDM_TYPE_SLAVE, &dbus_glib_gdm_slave_object_info); } static void gdm_slave_init (GdmSlave *slave) { - slave->priv = GDM_SLAVE_GET_PRIVATE (slave); + slave->priv = GDM_SLAVE_GET_PRIVATE (slave); - slave->priv->pid = -1; + slave->priv->pid = -1; } static void gdm_slave_finalize (GObject *object) { - GdmSlave *slave; + GdmSlave *slave; - g_return_if_fail (object != NULL); - g_return_if_fail (GDM_IS_SLAVE (object)); + g_return_if_fail (object != NULL); + g_return_if_fail (GDM_IS_SLAVE (object)); - slave = GDM_SLAVE (object); + slave = GDM_SLAVE (object); - g_return_if_fail (slave->priv != NULL); + g_return_if_fail (slave->priv != NULL); - gdm_slave_real_stop (slave); + gdm_slave_real_stop (slave); - G_OBJECT_CLASS (gdm_slave_parent_class)->finalize (object); + G_OBJECT_CLASS (gdm_slave_parent_class)->finalize (object); } |