diff options
author | William Jon McCann <mccann@src.gnome.org> | 2007-06-15 21:11:40 +0000 |
---|---|---|
committer | William Jon McCann <mccann@src.gnome.org> | 2007-06-15 21:11:40 +0000 |
commit | df894c228170ab2e2d8a9d0a56a986add1a11e27 (patch) | |
tree | d819bdb47231cb0ada17d80afe5b82d9c1a61fd3 /daemon/gdm-display.c | |
parent | ed6447ee52895e4dbe8c1895a6fa1b3d3ac3f9c7 (diff) | |
download | gdm-df894c228170ab2e2d8a9d0a56a986add1a11e27.tar.gz |
Split the greeter proxy into a client and server part. Create new display subclasses for factory and product. Also create new slave subclasses and executables for the same.
svn path=/branches/mccann-gobject/; revision=4993
Diffstat (limited to 'daemon/gdm-display.c')
-rw-r--r-- | daemon/gdm-display.c | 38 |
1 files changed, 37 insertions, 1 deletions
diff --git a/daemon/gdm-display.c b/daemon/gdm-display.c index 390e0de6..cb5b4f65 100644 --- a/daemon/gdm-display.c +++ b/daemon/gdm-display.c @@ -44,6 +44,8 @@ static guint32 display_serial = 1; #define GDM_DISPLAY_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GDM_TYPE_DISPLAY, GdmDisplayPrivate)) +#define DEFAULT_SLAVE_COMMAND LIBEXECDIR"/gdm-simple-slave" + struct GdmDisplayPrivate { char *id; @@ -54,6 +56,7 @@ struct GdmDisplayPrivate time_t creation_time; char *x11_cookie; char *x11_authority_file; + char *slave_command; gboolean is_local; @@ -70,6 +73,7 @@ enum { PROP_X11_COOKIE, PROP_X11_AUTHORITY_FILE, PROP_IS_LOCAL, + PROP_SLAVE_COMMAND, }; static void gdm_display_class_init (GdmDisplayClass *klass); @@ -200,6 +204,8 @@ gdm_display_get_number (GdmDisplay *display, static gboolean gdm_display_real_manage (GdmDisplay *display) { + char *command; + g_return_val_if_fail (GDM_IS_DISPLAY (display), FALSE); g_debug ("GdmDisplay manage display"); @@ -208,7 +214,15 @@ gdm_display_real_manage (GdmDisplay *display) g_assert (display->priv->slave_proxy == NULL); - display->priv->slave_proxy = gdm_slave_proxy_new (display->priv->id); + display->priv->slave_proxy = gdm_slave_proxy_new (); + + command = g_strdup_printf ("%s --display-id %s", + display->priv->slave_command, + display->priv->id); + + gdm_slave_proxy_set_command (display->priv->slave_proxy, command); + g_free (command); + gdm_slave_proxy_start (display->priv->slave_proxy); return TRUE; @@ -362,6 +376,14 @@ _gdm_display_set_is_local (GdmDisplay *display, } static void +_gdm_display_set_slave_command (GdmDisplay *display, + const char *command) +{ + g_free (display->priv->slave_command); + display->priv->slave_command = g_strdup (command); +} + +static void gdm_display_set_property (GObject *object, guint prop_id, const GValue *value, @@ -393,6 +415,9 @@ gdm_display_set_property (GObject *object, case PROP_IS_LOCAL: _gdm_display_set_is_local (self, g_value_get_boolean (value)); break; + case PROP_SLAVE_COMMAND: + _gdm_display_set_slave_command (self, g_value_get_string (value)); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; @@ -431,6 +456,9 @@ gdm_display_get_property (GObject *object, case PROP_IS_LOCAL: g_value_set_boolean (value, self->priv->is_local); break; + case PROP_SLAVE_COMMAND: + g_value_set_string (value, self->priv->slave_command); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; @@ -567,6 +595,14 @@ gdm_display_class_init (GdmDisplayClass *klass) TRUE, G_PARAM_READWRITE | G_PARAM_CONSTRUCT)); + g_object_class_install_property (object_class, + PROP_SLAVE_COMMAND, + g_param_spec_string ("slave-command", + "slave command", + "slave command", + DEFAULT_SLAVE_COMMAND, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT)); + g_type_class_add_private (klass, sizeof (GdmDisplayPrivate)); dbus_g_object_type_install_info (GDM_TYPE_DISPLAY, &dbus_glib_gdm_display_object_info); |