diff options
author | Ray Strode <rstrode@redhat.com> | 2010-03-15 13:56:38 -0400 |
---|---|---|
committer | Ray Strode <rstrode@redhat.com> | 2010-04-27 17:45:30 -0400 |
commit | 4f766f1a7be43b0b8d20159651371b462a1f9301 (patch) | |
tree | 7cb33f3d8401f3071031e6b0f79b58b85eabac64 | |
parent | c40b580ed71f206e8bcf0b2772011b4c944d1832 (diff) | |
download | gdm-4f766f1a7be43b0b8d20159651371b462a1f9301.tar.gz |
Move get_primary_session_id to gdm-user.h
It makes more sense there, and this will allow
us to drop get_sessions eventually.
-rw-r--r-- | gui/simple-greeter/gdm-user-manager.c | 61 | ||||
-rw-r--r-- | gui/simple-greeter/gdm-user.c | 30 | ||||
-rw-r--r-- | gui/simple-greeter/gdm-user.h | 1 |
3 files changed, 41 insertions, 51 deletions
diff --git a/gui/simple-greeter/gdm-user-manager.c b/gui/simple-greeter/gdm-user-manager.c index fe9d13d7..0bb868fc 100644 --- a/gui/simple-greeter/gdm-user-manager.c +++ b/gui/simple-greeter/gdm-user-manager.c @@ -150,55 +150,6 @@ start_new_login_session (GdmUserManager *manager) return res; } -/* needs to stay in sync with gdm-slave */ -static char * -_get_primary_user_session_id (GdmUserManager *manager, - GdmUser *user) -{ - gboolean can_activate_sessions; - GList *sessions; - GList *l; - char *primary_ssid; - - if (manager->priv->seat_id == NULL || manager->priv->seat_id[0] == '\0') { - g_debug ("GdmUserManager: display seat ID is not set; can't switch sessions"); - return NULL; - } - - primary_ssid = NULL; - sessions = NULL; - - can_activate_sessions = gdm_user_manager_can_switch (manager); - - if (! can_activate_sessions) { - g_debug ("GdmUserManager: seat is unable to activate sessions"); - goto out; - } - - sessions = gdm_user_get_sessions (user); - if (sessions == NULL) { - g_warning ("unable to determine sessions for user: %s", - gdm_user_get_user_name (user)); - goto out; - } - - for (l = sessions; l != NULL; l = l->next) { - const char *ssid; - - ssid = l->data; - - /* FIXME: better way to choose? */ - if (ssid != NULL) { - primary_ssid = g_strdup (ssid); - break; - } - } - - out: - - return primary_ssid; -} - static gboolean activate_session_id (GdmUserManager *manager, const char *seat_id, @@ -439,15 +390,23 @@ gdm_user_manager_activate_user_session (GdmUserManager *manager, GdmUser *user) { gboolean ret; - char *ssid; + const char *ssid; gboolean res; + gboolean can_activate_sessions; g_return_val_if_fail (GDM_IS_USER_MANAGER (manager), FALSE); g_return_val_if_fail (GDM_IS_USER (user), FALSE); ret = FALSE; - ssid = _get_primary_user_session_id (manager, user); + can_activate_sessions = gdm_user_manager_can_switch (manager); + + if (! can_activate_sessions) { + g_debug ("GdmUserManager: seat is unable to activate sessions"); + goto out; + } + + ssid = gdm_user_get_primary_session_id (user); if (ssid == NULL) { goto out; } diff --git a/gui/simple-greeter/gdm-user.c b/gui/simple-greeter/gdm-user.c index e182c2ac..2c623343 100644 --- a/gui/simple-greeter/gdm-user.c +++ b/gui/simple-greeter/gdm-user.c @@ -1065,3 +1065,33 @@ gdm_user_render_icon (GdmUser *user, return pixbuf; } + +G_CONST_RETURN char * +gdm_user_get_primary_session_id (GdmUser *user) +{ + GList *l; + const char *primary_ssid; + + primary_ssid = NULL; + + if (!gdm_user_is_logged_in (user)) { + g_debug ("User %s is not logged in, so has no primary session", + gdm_user_get_user_name (user)); + goto out; + } + + for (l = user->sessions; l != NULL; l = l->next) { + const char *ssid; + + ssid = l->data; + + /* FIXME: better way to choose? */ + if (ssid != NULL) { + primary_ssid = ssid; + break; + } + } +out: + return primary_ssid; +} + diff --git a/gui/simple-greeter/gdm-user.h b/gui/simple-greeter/gdm-user.h index c0b27ca1..3e448dd0 100644 --- a/gui/simple-greeter/gdm-user.h +++ b/gui/simple-greeter/gdm-user.h @@ -49,6 +49,7 @@ guint gdm_user_get_num_sessions (GdmUser *user); GList *gdm_user_get_sessions (GdmUser *user); gboolean gdm_user_is_logged_in (GdmUser *user); gulong gdm_user_get_login_frequency (GdmUser *user); +G_CONST_RETURN char *gdm_user_get_primary_session_id (GdmUser *user); GdkPixbuf *gdm_user_render_icon (GdmUser *user, gint icon_size); |