diff options
author | Robert Ancell <robert.ancell@canonical.com> | 2014-04-29 08:56:28 +1200 |
---|---|---|
committer | Robert Ancell <robert.ancell@canonical.com> | 2014-04-29 08:56:28 +1200 |
commit | 0dd88b48d15d702e0c12b9e233b40282289a5b1b (patch) | |
tree | 214acaa350fc9d7e7e1681c1c30f69573b610611 /liblightdm-gobject/greeter.c | |
parent | 24fabc8bb4ff8f2f8cabc5d51f87c9519381246b (diff) | |
download | lightdm-git-0dd88b48d15d702e0c12b9e233b40282289a5b1b.tar.gz |
Make resettable a construction property that is sent as part of the connect message
Diffstat (limited to 'liblightdm-gobject/greeter.c')
-rw-r--r-- | liblightdm-gobject/greeter.c | 51 |
1 files changed, 24 insertions, 27 deletions
diff --git a/liblightdm-gobject/greeter.c b/liblightdm-gobject/greeter.c index 2f28464b..385ffaa8 100644 --- a/liblightdm-gobject/greeter.c +++ b/liblightdm-gobject/greeter.c @@ -47,6 +47,7 @@ static guint signals[LAST_SIGNAL] = { 0 }; typedef struct { + gboolean resettable; gboolean connected; GIOChannel *to_server_channel, *from_server_channel; @@ -85,7 +86,6 @@ typedef enum GREETER_MESSAGE_SET_LANGUAGE, GREETER_MESSAGE_AUTHENTICATE_REMOTE, GREETER_MESSAGE_ENSURE_SHARED_DIR, - GREETER_MESSAGE_SET_RESETTABLE, } GreeterMessage; /* Messages from the server to the greeter */ @@ -113,6 +113,27 @@ lightdm_greeter_new () return g_object_new (LIGHTDM_TYPE_GREETER, NULL); } +/** + * lightdm_greeter_set_resettable: + * @greeter: A #LightDMGreeter + * @resettable: Whether the greeter wants to be reset instead of killed after the user logs in + * + * Set whether the greeter will be reset instead of killed after the user logs in. + * This must be called before lightdm_greeter_connect is called. + **/ +void +lightdm_greeter_set_resettable (LightDMGreeter *greeter, gboolean resettable) +{ + LightDMGreeterPrivate *priv; + + g_return_if_fail (LIGHTDM_IS_GREETER (greeter)); + + priv = GET_PRIVATE (greeter); + + g_return_if_fail (!priv->connected); + priv->resettable = resettable; +} + static gboolean timed_login_cb (gpointer data) { @@ -548,8 +569,9 @@ lightdm_greeter_connect_sync (LightDMGreeter *greeter, GError **error) g_io_add_watch (priv->from_server_channel, G_IO_IN, from_server_cb, greeter); g_debug ("Connecting to display manager..."); - write_header (message, MAX_MESSAGE_LENGTH, GREETER_MESSAGE_CONNECT, string_length (VERSION), &offset); + write_header (message, MAX_MESSAGE_LENGTH, GREETER_MESSAGE_CONNECT, string_length (VERSION) + int_length (), &offset); write_string (message, MAX_MESSAGE_LENGTH, VERSION, &offset); + write_int (message, MAX_MESSAGE_LENGTH, priv->resettable ? 1 : 0, &offset); write_message (greeter, message, offset); response = read_message (greeter, &response_length, TRUE); @@ -1093,31 +1115,6 @@ lightdm_greeter_set_language (LightDMGreeter *greeter, const gchar *language) } /** - * lightdm_greeter_set_resettable: - * @greeter: A #LightDMGreeter - * @resettable: Whether the greeter wants to be reset instead of killed after the user logs in - * - * Set whether the greeter will be reset instead of killed after the user logs in. - **/ -void -lightdm_greeter_set_resettable (LightDMGreeter *greeter, gboolean resettable) -{ - LightDMGreeterPrivate *priv; - guint8 message[MAX_MESSAGE_LENGTH]; - gsize offset = 0; - - g_return_if_fail (LIGHTDM_IS_GREETER (greeter)); - - priv = GET_PRIVATE (greeter); - - g_return_if_fail (priv->connected); - - write_header (message, MAX_MESSAGE_LENGTH, GREETER_MESSAGE_SET_RESETTABLE, int_length (), &offset); - write_int (message, MAX_MESSAGE_LENGTH, resettable ? 1 : 0, &offset); - write_message (greeter, message, offset); -} - -/** * lightdm_greeter_start_session_sync: * @greeter: A #LightDMGreeter * @session: (allow-none): The session to log into or #NULL to use the default. |