gdm r5978 - in trunk: . daemon gui/simple-greeter



Author: halfline
Date: Sun Mar  9 22:05:51 2008
New Revision: 5978
URL: http://svn.gnome.org/viewvc/gdm?rev=5978&view=rev

Log:
2008-03-09  Ray Strode  <rstrode redhat com>

	* daemon/gdm-simple-slave.c:
	(on_session_authorized),
	* daemon/gdm-greeter-server.[ch]:
	(gdm_greeter_server_user_authorized),
	(do_introspect):
	When the user has successfully been verified,
	inform the greeter, so that it can make a judgement
	about whether the user's session should be opened.
	* gui/simple-greeter/gdm-greeter-client.c:
	(on_user_authorized), (client_dbus_handle_message),
	(gdm_greeter_client_class_init):
	* gui/simple-greeter/gdm-greeter-session.c
	(on_user_authorized), (gdm_greeter_session_init):
	forward "user-authorized" signal from slave to
	login window
	* gui/simple-greeter/gdm-greeter-login-window.c:
	(gdm_greeter_login_window_user_authorized):
	When the user is verified start the session as soon
	as the user has had an opporunity to interact with
	language and session choosers


Modified:
   trunk/ChangeLog
   trunk/daemon/gdm-greeter-server.c
   trunk/daemon/gdm-greeter-server.h
   trunk/daemon/gdm-simple-slave.c
   trunk/gui/simple-greeter/gdm-greeter-client.c
   trunk/gui/simple-greeter/gdm-greeter-client.h
   trunk/gui/simple-greeter/gdm-greeter-login-window.c
   trunk/gui/simple-greeter/gdm-greeter-login-window.h
   trunk/gui/simple-greeter/gdm-greeter-session.c

Modified: trunk/daemon/gdm-greeter-server.c
==============================================================================
--- trunk/daemon/gdm-greeter-server.c	(original)
+++ trunk/daemon/gdm-greeter-server.c	Sun Mar  9 22:05:51 2008
@@ -280,6 +280,12 @@
         send_dbus_string_and_int_signal (greeter_server, "TimedLoginRequested", username, delay);
 }
 
+void
+gdm_greeter_server_user_authorized (GdmGreeterServer *greeter_server)
+{
+        send_dbus_void_signal (greeter_server, "UserAuthorized");
+}
+
 /* Note: Use abstract sockets like dbus does by default on Linux. Abstract
  * sockets are only available on Linux.
  */
@@ -716,6 +722,8 @@
                                "    </signal>\n"
                                "    <signal name=\"Reset\">\n"
                                "    </signal>\n"
+                               "    <signal name=\"UserAuthorized\">\n"
+                               "    </signal>\n"
                                "  </interface>\n");
 
         reply = dbus_message_new_method_return (message);

Modified: trunk/daemon/gdm-greeter-server.h
==============================================================================
--- trunk/daemon/gdm-greeter-server.h	(original)
+++ trunk/daemon/gdm-greeter-server.h	Sun Mar  9 22:05:51 2008
@@ -94,6 +94,8 @@
 void                gdm_greeter_server_request_timed_login   (GdmGreeterServer *greeter_server,
                                                               const char       *username,
                                                               int               delay);
+void                gdm_greeter_server_user_authorized       (GdmGreeterServer *greeter_server);
+
 
 G_END_DECLS
 

Modified: trunk/daemon/gdm-simple-slave.c
==============================================================================
--- trunk/daemon/gdm-simple-slave.c	(original)
+++ trunk/daemon/gdm-simple-slave.c	Sun Mar  9 22:05:51 2008
@@ -221,6 +221,7 @@
 on_session_authorized (GdmSession     *session,
                        GdmSimpleSlave *slave)
 {
+        gdm_greeter_server_user_authorized (slave->priv->greeter_server);
         gdm_simple_slave_accredit_when_ready (slave);
 }
 

Modified: trunk/gui/simple-greeter/gdm-greeter-client.c
==============================================================================
--- trunk/gui/simple-greeter/gdm-greeter-client.c	(original)
+++ trunk/gui/simple-greeter/gdm-greeter-client.c	Sun Mar  9 22:05:51 2008
@@ -68,6 +68,7 @@
         DEFAULT_LANGUAGE_NAME_CHANGED,
         DEFAULT_SESSION_NAME_CHANGED,
         TIMED_LOGIN_REQUESTED,
+        USER_AUTHORIZED,
         LAST_SIGNAL
 };
 
@@ -187,6 +188,15 @@
 }
 
 static void
+on_user_authorized (GdmGreeterClient *client,
+                    DBusMessage      *message)
+{
+        g_signal_emit (client,
+                       gdm_greeter_client_signals[USER_AUTHORIZED],
+                       0);
+}
+
+static void
 on_info_query (GdmGreeterClient *client,
                DBusMessage      *message)
 {
@@ -620,6 +630,8 @@
                 on_default_session_name_changed (client, message);
         } else if (dbus_message_is_signal (message, GREETER_SERVER_DBUS_INTERFACE, "TimedLoginRequested")) {
                 on_timed_login_requested (client, message);
+        } else if (dbus_message_is_signal (message, GREETER_SERVER_DBUS_INTERFACE, "UserAuthorized")) {
+                on_user_authorized (client, message);
         } else {
                 return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
         }
@@ -894,6 +906,15 @@
                               G_TYPE_NONE,
                               2, G_TYPE_STRING, G_TYPE_INT);
 
+        gdm_greeter_client_signals[USER_AUTHORIZED] =
+                g_signal_new ("user-authorized",
+                              G_OBJECT_CLASS_TYPE (object_class),
+                              G_SIGNAL_RUN_FIRST,
+                              G_STRUCT_OFFSET (GdmGreeterClientClass, user_authorized),
+                              NULL,
+                              NULL,
+                              g_cclosure_marshal_VOID__VOID,
+                              G_TYPE_NONE, 0);
 }
 
 static void

Modified: trunk/gui/simple-greeter/gdm-greeter-client.h
==============================================================================
--- trunk/gui/simple-greeter/gdm-greeter-client.h	(original)
+++ trunk/gui/simple-greeter/gdm-greeter-client.h	Sun Mar  9 22:05:51 2008
@@ -67,6 +67,7 @@
         void (* timed_login_requested)   (GdmGreeterClient  *client,
                                           const char        *username,
                                           int                delay);
+        void (* user_authorized)         (GdmGreeterClient  *client);
 } GdmGreeterClientClass;
 
 #define GDM_GREETER_CLIENT_ERROR (gdm_greeter_client_error_quark ())

Modified: trunk/gui/simple-greeter/gdm-greeter-login-window.c
==============================================================================
--- trunk/gui/simple-greeter/gdm-greeter-login-window.c	(original)
+++ trunk/gui/simple-greeter/gdm-greeter-login-window.c	Sun Mar  9 22:05:51 2008
@@ -746,6 +746,16 @@
         return TRUE;
 }
 
+void
+gdm_greeter_login_window_user_authorized (GdmGreeterLoginWindow *login_window)
+{
+        g_return_if_fail (GDM_IS_GREETER_LOGIN_WINDOW (login_window));
+
+        g_debug ("GdmGreeterLoginWindow: user now authorized");
+
+        gdm_greeter_login_window_start_session_when_ready (login_window);
+}
+
 static void
 _gdm_greeter_login_window_set_display_is_local (GdmGreeterLoginWindow *login_window,
                                                 gboolean               is)

Modified: trunk/gui/simple-greeter/gdm-greeter-login-window.h
==============================================================================
--- trunk/gui/simple-greeter/gdm-greeter-login-window.h	(original)
+++ trunk/gui/simple-greeter/gdm-greeter-login-window.h	Sun Mar  9 22:05:51 2008
@@ -79,6 +79,7 @@
 void               gdm_greeter_login_window_request_timed_login (GdmGreeterLoginWindow *login_window,
                                                                  const char            *username,
                                                                  int                    delay);
+void               gdm_greeter_login_window_user_authorized     (GdmGreeterLoginWindow *login_window);
 
 G_END_DECLS
 

Modified: trunk/gui/simple-greeter/gdm-greeter-session.c
==============================================================================
--- trunk/gui/simple-greeter/gdm-greeter-session.c	(original)
+++ trunk/gui/simple-greeter/gdm-greeter-session.c	Sun Mar  9 22:05:51 2008
@@ -155,6 +155,14 @@
 }
 
 static void
+on_user_authorized (GdmGreeterClient  *client,
+                    GdmGreeterSession *session)
+{
+        g_debug ("GdmGreeterSession: user authorized");
+        gdm_greeter_login_window_user_authorized (GDM_GREETER_LOGIN_WINDOW (session->priv->login_window));
+}
+
+static void
 on_info_query (GdmGreeterClient  *client,
                const char        *text,
                GdmGreeterSession *session)
@@ -839,7 +847,10 @@
                           "timed-login-requested",
                           G_CALLBACK (on_timed_login_requested),
                           session);
-
+        g_signal_connect (session->priv->client,
+                          "user-authorized",
+                          G_CALLBACK (on_user_authorized),
+                          session);
 
         /* We want to listen for panel mnemonics even if the
          * login window is focused, so we intercept them here.



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