gdm r5693 - in trunk: . daemon



Author: mccann
Date: Tue Feb  5 14:55:35 2008
New Revision: 5693
URL: http://svn.gnome.org/viewvc/gdm?rev=5693&view=rev

Log:
2008-02-05  William Jon McCann  <jmccann redhat com>

	* daemon/gdm-slave.c: (session_unlock),
	(gdm_slave_switch_to_user_session):
	Unlock session after switching.



Modified:
   trunk/ChangeLog
   trunk/daemon/gdm-slave.c

Modified: trunk/daemon/gdm-slave.c
==============================================================================
--- trunk/daemon/gdm-slave.c	(original)
+++ trunk/daemon/gdm-slave.c	Tue Feb  5 14:55:35 2008
@@ -984,6 +984,40 @@
         return ret;
 }
 
+static gboolean
+session_unlock (GdmSlave   *slave,
+                const char *ssid)
+{
+        DBusError       error;
+        DBusMessage    *message;
+        DBusMessage    *reply;
+
+        g_debug ("ConsoleKit: Unlocking session %s", ssid);
+        message = dbus_message_new_method_call (CK_NAME,
+                                                ssid,
+                                                CK_SESSION_INTERFACE,
+                                                "Unlock");
+        if (message == NULL) {
+                g_debug ("GdmSlave: ConsoleKit couldn't allocate the D-Bus message");
+                return FALSE;
+        }
+
+        dbus_error_init (&error);
+        reply = dbus_connection_send_with_reply_and_block (dbus_g_connection_get_connection (slave->priv->connection),
+                                                           message,
+                                                           -1, &error);
+        dbus_message_unref (message);
+        dbus_message_unref (reply);
+        dbus_connection_flush (dbus_g_connection_get_connection (slave->priv->connection));
+
+        if (dbus_error_is_set (&error)) {
+                g_debug ("GdmSlave: ConsoleKit %s raised:\n %s\n\n", error.name, error.message);
+                return FALSE;
+        }
+
+        return TRUE;
+}
+
 gboolean
 gdm_slave_switch_to_user_session (GdmSlave   *slave,
                                   const char *username)
@@ -1008,6 +1042,12 @@
                 goto out;
         }
 
+        res = session_unlock (slave, ssid_to_activate);
+        if (!res) {
+                /* this isn't fatal */
+                g_debug ("GdmSlave: unable to unlock session: %s", ssid_to_activate);
+        }
+
         ret = TRUE;
 
  out:



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]