gdm r5675 - in trunk: . gui/simple-greeter
- From: mccann svn gnome org
- To: svn-commits-list gnome org
- Subject: gdm r5675 - in trunk: . gui/simple-greeter
- Date: Fri, 1 Feb 2008 20:36:48 +0000 (GMT)
Author: mccann
Date: Fri Feb 1 20:36:47 2008
New Revision: 5675
URL: http://svn.gnome.org/viewvc/gdm?rev=5675&view=rev
Log:
2008-02-01 William Jon McCann <mccann jhu edu>
* gui/simple-greeter/gdm-user-manager.c:
(maybe_add_session_for_user), (add_sessions_for_user),
(get_uid_from_session_id), (seat_session_added), (get_seat_proxy):
Fix filtering out sessions that don't have x11 displays.
Modified:
trunk/ChangeLog
trunk/gui/simple-greeter/gdm-user-manager.c
Modified: trunk/gui/simple-greeter/gdm-user-manager.c
==============================================================================
--- trunk/gui/simple-greeter/gdm-user-manager.c (original)
+++ trunk/gui/simple-greeter/gdm-user-manager.c Fri Feb 1 20:36:47 2008
@@ -96,6 +96,7 @@
GHashTable *exclusions;
GnomeVFSMonitorHandle *passwd_monitor;
GnomeVFSMonitorHandle *shells_monitor;
+ DBusGConnection *connection;
DBusGProxy *seat_proxy;
char *seat_id;
@@ -241,11 +242,55 @@
return x11_display;
}
+static gboolean
+maybe_add_session_for_user (GdmUserManager *manager,
+ GdmUser *user,
+ const char *ssid)
+{
+ char *sid;
+ char *x11_display;
+ gboolean ret;
+
+ ret = FALSE;
+ sid = NULL;
+ x11_display = NULL;
+
+ /* skip if on another seat */
+ sid = get_seat_id_for_session (manager->priv->connection, ssid);
+ if (sid == NULL
+ || manager->priv->seat_id == NULL
+ || strcmp (sid, manager->priv->seat_id) != 0) {
+ g_debug ("GdmUserManager: not adding session on other seat: %s", ssid);
+ goto out;
+ }
+
+ /* skip if doesn't have an x11 display */
+ x11_display = get_x11_display_for_session (manager->priv->connection, ssid);
+ if (x11_display == NULL || x11_display[0] == '\0') {
+ g_debug ("GdmUserManager: not adding session without a x11 display: %s", ssid);
+ goto out;
+ }
+
+ g_hash_table_insert (manager->priv->sessions,
+ g_strdup (ssid),
+ g_strdup (gdm_user_get_user_name (user)));
+
+ _gdm_user_add_session (user, ssid);
+ g_debug ("GdmUserManager: added session for user: %s", gdm_user_get_user_name (user));
+
+ ret = TRUE;
+
+ out:
+ g_free (sid);
+ g_free (x11_display);
+
+ return ret;
+}
+
static void
add_sessions_for_user (GdmUserManager *manager,
GdmUser *user)
{
- DBusGConnection *connection;
DBusGProxy *proxy;
GError *error;
gboolean res;
@@ -253,17 +298,7 @@
GPtrArray *sessions;
int i;
- proxy = NULL;
-
- error = NULL;
- connection = dbus_g_bus_get (DBUS_BUS_SYSTEM, &error);
- if (connection == NULL) {
- g_warning ("Failed to connect to the D-Bus daemon: %s", error->message);
- g_error_free (error);
- goto out;
- }
-
- proxy = dbus_g_proxy_new_for_name (connection,
+ proxy = dbus_g_proxy_new_for_name (manager->priv->connection,
CK_NAME,
CK_MANAGER_PATH,
CK_MANAGER_INTERFACE);
@@ -295,34 +330,9 @@
for (i = 0; i < sessions->len; i++) {
char *ssid;
- char *sid;
- char *x11_display;
ssid = g_ptr_array_index (sessions, i);
-
- /* skip if on another seat */
- sid = get_seat_id_for_session (connection, ssid);
- if (sid == NULL
- || manager->priv->seat_id == NULL
- || strcmp (sid, manager->priv->seat_id) != 0) {
- goto next;
- }
-
- /* skip if doesn't have an x11 display */
- x11_display = get_x11_display_for_session (connection, ssid);
- if (x11_display == NULL || x11_display[0] == '\0') {
- goto next;
- }
- g_free (x11_display);
-
- g_hash_table_insert (manager->priv->sessions,
- g_strdup (ssid),
- g_strdup (gdm_user_get_user_name (user)));
-
- _gdm_user_add_session (user, ssid);
- next:
- g_free (sid);
- g_free (ssid);
+ maybe_add_session_for_user (manager, user, ssid);
}
g_ptr_array_free (sessions, TRUE);
@@ -426,24 +436,16 @@
}
static gboolean
-get_uid_from_session_id (const char *session_id,
- uid_t *uidp)
+get_uid_from_session_id (GdmUserManager *manager,
+ const char *session_id,
+ uid_t *uidp)
{
- DBusGConnection *connection;
DBusGProxy *proxy;
GError *error;
int uid;
gboolean res;
- error = NULL;
- connection = dbus_g_bus_get (DBUS_BUS_SYSTEM, &error);
- if (connection == NULL) {
- g_warning ("Failed to connect to the D-Bus daemon: %s", error->message);
- g_error_free (error);
- return FALSE;
- }
-
- proxy = dbus_g_proxy_new_for_name (connection,
+ proxy = dbus_g_proxy_new_for_name (manager->priv->connection,
CK_NAME,
session_id,
CK_SESSION_INTERFACE);
@@ -486,7 +488,7 @@
g_debug ("Session added: %s", session_id);
- res = get_uid_from_session_id (session_id, &uid);
+ res = get_uid_from_session_id (manager, session_id, &uid);
if (! res) {
g_warning ("Unable to lookup user for session");
return;
@@ -505,11 +507,7 @@
user = add_new_user_for_pwent (manager, pwent);
}
- g_debug ("GdmUserManager: Session added for %d", (int)uid);
- g_hash_table_insert (manager->priv->sessions,
- g_strdup (session_id),
- g_strdup (gdm_user_get_user_name (user)));
- _gdm_user_add_session (user, session_id);
+ maybe_add_session_for_user (manager, user, session_id);
}
static void
@@ -552,21 +550,20 @@
static void
get_seat_proxy (GdmUserManager *manager)
{
- DBusGConnection *connection;
DBusGProxy *proxy;
GError *error;
g_assert (manager->priv->seat_proxy == NULL);
error = NULL;
- connection = dbus_g_bus_get (DBUS_BUS_SYSTEM, &error);
- if (connection == NULL) {
+ manager->priv->connection = dbus_g_bus_get (DBUS_BUS_SYSTEM, &error);
+ if (manager->priv->connection == NULL) {
g_warning ("Failed to connect to the D-Bus daemon: %s", error->message);
g_error_free (error);
return;
}
- manager->priv->seat_id = get_current_seat_id (connection);
+ manager->priv->seat_id = get_current_seat_id (manager->priv->connection);
if (manager->priv->seat_id == NULL) {
return;
}
@@ -574,7 +571,7 @@
g_debug ("GdmUserManager: Found current seat: %s", manager->priv->seat_id);
error = NULL;
- proxy = dbus_g_proxy_new_for_name_owner (connection,
+ proxy = dbus_g_proxy_new_for_name_owner (manager->priv->connection,
CK_NAME,
manager->priv->seat_id,
CK_SEAT_INTERFACE,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]