diff options
author | Ray Strode <rstrode@redhat.com> | 2014-11-13 10:57:05 -0500 |
---|---|---|
committer | Ray Strode <rstrode@redhat.com> | 2014-11-14 15:22:19 -0500 |
commit | 340063f9a587e6b1bb04d3fde26979e4452ca76f (patch) | |
tree | 1ee9168fd0f0af34b14eeca29195a302c04d7590 | |
parent | f14b55607cf9de8a1d397d6fdc9451bc414902d5 (diff) | |
download | gdm-340063f9a587e6b1bb04d3fde26979e4452ca76f.tar.gz |
worker: make sure SavedSessionNameRead is emitted for conversations without initial username
We emit SavedSessionNameRead when we know the session associated with a
user account. Unfortunately, we don't emit the signal in the case we
don't know the username up front (such as with a smartcard).
This commit fixes it to be emitted in that case.
https://bugzilla.gnome.org/show_bug.cgi?id=740139
-rw-r--r-- | daemon/gdm-session-worker.c | 33 |
1 files changed, 21 insertions, 12 deletions
diff --git a/daemon/gdm-session-worker.c b/daemon/gdm-session-worker.c index 89505c2f..12753bf9 100644 --- a/daemon/gdm-session-worker.c +++ b/daemon/gdm-session-worker.c @@ -2399,18 +2399,6 @@ do_setup (GdmSessionWorker *worker) g_dbus_method_invocation_take_error (worker->priv->pending_invocation, error); } worker->priv->pending_invocation = NULL; - - /* These singal handlers should be disconnected after the loading, - * so that gdm_session_settings_set_* APIs don't cause the emitting - * of Saved*NameRead D-Bus signals any more. - */ - g_signal_handlers_disconnect_by_func (worker->priv->user_settings, - G_CALLBACK (on_saved_session_name_read), - worker); - - g_signal_handlers_disconnect_by_func (worker->priv->user_settings, - G_CALLBACK (on_saved_language_name_read), - worker); } static void @@ -2504,6 +2492,18 @@ on_settings_is_loaded_changed (GdmSessionSettings *user_settings, return; } + /* These singal handlers should be disconnected after the loading, + * so that gdm_session_settings_set_* APIs don't cause the emitting + * of Saved*NameRead D-Bus signals any more. + */ + g_signal_handlers_disconnect_by_func (worker->priv->user_settings, + G_CALLBACK (on_saved_session_name_read), + worker); + + g_signal_handlers_disconnect_by_func (worker->priv->user_settings, + G_CALLBACK (on_saved_language_name_read), + worker); + if (worker->priv->state == GDM_SESSION_WORKER_STATE_NONE) { g_debug ("GdmSessionWorker: queuing setup for user: %s %s", worker->priv->username, worker->priv->display_device); @@ -2773,6 +2773,15 @@ gdm_session_worker_handle_setup (GdmDBusWorker *object, worker->priv->display_is_local = display_is_local; worker->priv->username = NULL; + g_signal_connect_swapped (worker->priv->user_settings, + "notify::language-name", + G_CALLBACK (on_saved_language_name_read), + worker); + + g_signal_connect_swapped (worker->priv->user_settings, + "notify::session-name", + G_CALLBACK (on_saved_session_name_read), + worker); return TRUE; } |