summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJesús González <jgonzalez@gdr-sistemas.com>2014-09-20 09:21:37 +0200
committerJesús González <jgonzalez@gdr-sistemas.com>2014-09-20 09:21:37 +0200
commite05f6b09d771df8bf1dbe0337c1d4be5e6d61f76 (patch)
tree6dfd34a8b7a98a2bf79c0254f93d716dea05ec53 /src
parentd093465ea61510c139d13e94313cc19f0b21e628 (diff)
downloadlightdm-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.c22
-rw-r--r--src/login1.c9
-rw-r--r--src/login1.h2
-rw-r--r--src/seat.c16
-rw-r--r--src/seat.h2
-rw-r--r--src/session-child.c8
-rw-r--r--src/session.c22
-rw-r--r--src/session.h2
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;
diff --git a/src/seat.c b/src/seat.c
index 51ddd105..146e4106 100644
--- a/src/seat.c
+++ b/src/seat.c
@@ -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)
{
diff --git a/src/seat.h b/src/seat.h
index 08dcce05..8b86568b 100644
--- a/src/seat.h
+++ b/src/seat.h
@@ -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);