diff options
author | Jesús González <jgonzalez@gdr-sistemas.com> | 2014-09-20 09:21:37 +0200 |
---|---|---|
committer | Jesús González <jgonzalez@gdr-sistemas.com> | 2014-09-20 09:21:37 +0200 |
commit | e05f6b09d771df8bf1dbe0337c1d4be5e6d61f76 (patch) | |
tree | 6dfd34a8b7a98a2bf79c0254f93d716dea05ec53 /src | |
parent | d093465ea61510c139d13e94313cc19f0b21e628 (diff) | |
download | lightdm-e05f6b09d771df8bf1dbe0337c1d4be5e6d61f76.tar.gz |
Refactored code to add seat_find_session_by_login1_id() for better SOLID practice as suggested by @robert-ancell.
Also renamed variables and functions with *login1_session* in their names to *login1_session_id* for better nomenclature coherency.
Diffstat (limited to 'src')
-rw-r--r-- | src/lightdm.c | 22 | ||||
-rw-r--r-- | src/login1.c | 9 | ||||
-rw-r--r-- | src/login1.h | 2 | ||||
-rw-r--r-- | src/seat.c | 16 | ||||
-rw-r--r-- | src/seat.h | 2 | ||||
-rw-r--r-- | src/session-child.c | 8 | ||||
-rw-r--r-- | src/session.c | 22 | ||||
-rw-r--r-- | src/session.h | 2 |
8 files changed, 49 insertions, 34 deletions
diff --git a/src/lightdm.c b/src/lightdm.c index 0d161ed5..0c9f3d96 100644 --- a/src/lightdm.c +++ b/src/lightdm.c @@ -1056,9 +1056,9 @@ login1_can_graphical_changed_cb (Login1Seat *login1_seat) } static void -login1_active_session_changed_cb (Login1Seat *login1_seat, const gchar *login1_session) +login1_active_session_changed_cb (Login1Seat *login1_seat, const gchar *login1_session_id) { - g_debug ("Seat %s changes active session to %s", login1_seat_get_id (login1_seat), login1_session); + g_debug ("Seat %s changes active session to %s", login1_seat_get_id (login1_seat), login1_session_id); Seat *seat; seat = display_manager_get_seat (display_manager, login1_seat_get_id (login1_seat)); @@ -1068,24 +1068,20 @@ login1_active_session_changed_cb (Login1Seat *login1_seat, const gchar *login1_s Session *active_session; active_session = seat_get_expected_active_session (seat); - if (g_strcmp0 (login1_session, session_get_login1_session (active_session)) == 0) + if (g_strcmp0 (login1_session_id, session_get_login1_session_id (active_session)) == 0) { // Session is already active - g_debug ("Session %s is already active", login1_session); + g_debug ("Session %s is already active", login1_session_id); return; } - GList *session_link; - for (session_link = seat_get_sessions (seat); session_link; session_link = session_link->next) + active_session = seat_find_session_by_login1_id (seat, login1_session_id); + if (active_session != NULL) { - Session *session = session_link->data; + g_debug ("Activating session %s", login1_session_id); + seat_set_externally_activated_session (seat, active_session); + return; - if (g_strcmp0 (login1_session, session_get_login1_session (session)) == 0) - { - g_debug ("Activating session %s", login1_session); - seat_set_externally_activated_session (seat, session); - return; - } } } } diff --git a/src/login1.c b/src/login1.c index 9e9ae87f..e5dfa6a6 100644 --- a/src/login1.c +++ b/src/login1.c @@ -153,7 +153,6 @@ seat_properties_changed_cb (GDBusConnection *connection, if (result) { GVariant *value1, *value2; - const gchar *login1_session; g_variant_get (result, "(v)", &value1); @@ -162,11 +161,13 @@ seat_properties_changed_cb (GDBusConnection *connection, if (value2) { - login1_session = g_variant_get_string (value2, NULL); + const gchar *login1_session_id; - if (login1_session) + login1_session_id = g_variant_get_string (value2, NULL); + + if (login1_session_id) { - g_signal_emit (seat, seat_signals[ACTIVE_SESSION_CHANGED], 0, login1_session); + g_signal_emit (seat, seat_signals[ACTIVE_SESSION_CHANGED], 0, login1_session_id); } g_variant_unref (value2); diff --git a/src/login1.h b/src/login1.h index 3295ceba..dc49caa2 100644 --- a/src/login1.h +++ b/src/login1.h @@ -37,7 +37,7 @@ typedef struct { GObjectClass parent_class; void (*can_graphical_changed)(Login1Seat *seat); - void (*active_session_changed)(Login1Seat *seat, const gchar *login1_session); + void (*active_session_changed)(Login1Seat *seat, const gchar *login1_session_id); } Login1SeatClass; typedef struct Login1ServicePrivate Login1ServicePrivate; @@ -304,6 +304,22 @@ seat_set_externally_activated_session (Seat *seat, Session *session) seat->priv->active_session = g_object_ref (session); } +Session * +seat_find_session_by_login1_id (Seat *seat, const gchar *login1_session_id) +{ + GList *session_link; + for (session_link = seat->priv->sessions; session_link; session_link = session_link->next) + { + Session *session = session_link->data; + + if (g_strcmp0 (login1_session_id, session_get_login1_session_id (session)) == 0) + { + return session; + } + } + return NULL; +} + gboolean seat_get_can_switch (Seat *seat) { @@ -92,6 +92,8 @@ void seat_set_externally_activated_session (Seat *seat, Session *session); Session *seat_get_expected_active_session (Seat *seat); +Session *seat_find_session_by_login1_id (Seat *seat, const gchar *login1_session_id); + gboolean seat_get_can_switch (Seat *seat); gboolean seat_get_allow_guest (Seat *seat); diff --git a/src/session-child.c b/src/session-child.c index c6f8a7ce..535aab9a 100644 --- a/src/session-child.c +++ b/src/session-child.c @@ -243,7 +243,7 @@ session_child_run (int argc, char **argv) XAuthority *x_authority = NULL; gchar *x_authority_filename; GDBusConnection *bus; - const gchar *login1_session = NULL; + const gchar *login1_session_id = NULL; gchar *console_kit_cookie = NULL; const gchar *locale_value; gchar *locale_var; @@ -545,10 +545,10 @@ session_child_run (int argc, char **argv) } /* Check what logind session we are, or fallback to ConsoleKit */ - login1_session = pam_getenv (pam_handle, "XDG_SESSION_ID"); - if (login1_session) + login1_session_id = pam_getenv (pam_handle, "XDG_SESSION_ID"); + if (login1_session_id) { - write_string (login1_session); + write_string (login1_session_id); if (version >= 2) write_string (NULL); } diff --git a/src/session.c b/src/session.c index 10e369c3..2797982b 100644 --- a/src/session.c +++ b/src/session.c @@ -100,7 +100,7 @@ struct SessionPrivate gchar *console_kit_cookie; /* login1 session */ - gchar *login1_session; + gchar *login1_session_id; /* Environment to set in child */ GList *env; @@ -653,10 +653,10 @@ session_get_username (Session *session) } const gchar * -session_get_login1_session (Session *session) +session_get_login1_session_id (Session *session) { g_return_val_if_fail (session != NULL, NULL); - return session->priv->login1_session; + return session->priv->login1_session_id; } const gchar * @@ -812,7 +812,7 @@ session_real_run (Session *session) for (i = 0; i < argc; i++) write_string (session, session->priv->argv[i]); - session->priv->login1_session = read_string_from_child (session); + session->priv->login1_session_id = read_string_from_child (session); session->priv->console_kit_cookie = read_string_from_child (session); } @@ -822,8 +822,8 @@ session_lock (Session *session) g_return_if_fail (session != NULL); if (getuid () == 0) { - if (session->priv->login1_session) - login1_service_lock_session (login1_service_get_instance (), session->priv->login1_session); + if (session->priv->login1_session_id) + login1_service_lock_session (login1_service_get_instance (), session->priv->login1_session_id); else if (session->priv->console_kit_cookie) ck_lock_session (session->priv->console_kit_cookie); } @@ -835,8 +835,8 @@ session_unlock (Session *session) g_return_if_fail (session != NULL); if (getuid () == 0) { - if (session->priv->login1_session) - login1_service_unlock_session (login1_service_get_instance (), session->priv->login1_session); + if (session->priv->login1_session_id) + login1_service_unlock_session (login1_service_get_instance (), session->priv->login1_session_id); else if (session->priv->console_kit_cookie) ck_unlock_session (session->priv->console_kit_cookie); } @@ -848,8 +848,8 @@ session_activate (Session *session) g_return_if_fail (session != NULL); if (getuid () == 0) { - if (session->priv->login1_session) - login1_service_activate_session (login1_service_get_instance (), session->priv->login1_session); + if (session->priv->login1_session_id) + login1_service_activate_session (login1_service_get_instance (), session->priv->login1_session_id); else if (session->priv->console_kit_cookie) ck_activate_session (session->priv->console_kit_cookie); } @@ -944,7 +944,7 @@ session_finalize (GObject *object) if (self->priv->x_authority) g_object_unref (self->priv->x_authority); g_free (self->priv->remote_host_name); - g_free (self->priv->login1_session); + g_free (self->priv->login1_session_id); g_free (self->priv->console_kit_cookie); g_list_free_full (self->priv->env, g_free); g_strfreev (self->priv->argv); diff --git a/src/session.h b/src/session.h index 5b6baa8d..b765021d 100644 --- a/src/session.h +++ b/src/session.h @@ -111,7 +111,7 @@ gboolean session_get_is_started (Session *session); const gchar *session_get_username (Session *session); -const gchar *session_get_login1_session (Session *session); +const gchar *session_get_login1_session_id (Session *session); const gchar *session_get_console_kit_cookie (Session *session); |