summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRay Strode <rstrode@redhat.com>2010-03-15 13:56:38 -0400
committerRay Strode <rstrode@redhat.com>2010-04-27 17:45:30 -0400
commit4f766f1a7be43b0b8d20159651371b462a1f9301 (patch)
tree7cb33f3d8401f3071031e6b0f79b58b85eabac64
parentc40b580ed71f206e8bcf0b2772011b4c944d1832 (diff)
downloadgdm-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.c61
-rw-r--r--gui/simple-greeter/gdm-user.c30
-rw-r--r--gui/simple-greeter/gdm-user.h1
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);