]> rtime.felk.cvut.cz Git - sojka/lightdm.git/commitdiff
Support Mir greeters too by waiting to send IDLE until after we're done handling...
authorMichael Terry <michael.terry@canonical.com>
Fri, 25 Apr 2014 15:33:12 +0000 (11:33 -0400)
committerMichael Terry <michael.terry@canonical.com>
Fri, 25 Apr 2014 15:33:12 +0000 (11:33 -0400)
src/seat.c
tests/scripts/unity-mir-switch-to-user-resettable.conf [new file with mode: 0644]
tests/test-unity-mir-switch-to-user-resettable [new file with mode: 0755]

index 83c383b0cb66fb7ebd101a0cd6a8af66ef453780..a341b5cb4927e92d0c8c1c0c71637662adb690d2 100644 (file)
@@ -201,6 +201,13 @@ seat_get_sessions (Seat *seat)
     return seat->priv->sessions;
 }
 
+static gboolean
+set_greeter_idle (gpointer greeter)
+{
+    greeter_idle (GREETER (greeter));
+    return FALSE;
+}
+
 void
 seat_set_active_session (Seat *seat, Session *session)
 {
@@ -223,10 +230,14 @@ seat_set_active_session (Seat *seat, Session *session)
             Greeter *greeter = GREETER (s);
             if (greeter_get_resettable (greeter))
             {
-                if (seat->priv->active_session == greeter)
+                if (seat->priv->active_session == SESSION (greeter))
                 {
                     l_debug (seat, "Idling greeter");
-                    greeter_idle (greeter);
+                    /* Do this in an idle callback, because we might very well
+                       be in the middle of responding to a START_SESSION
+                       request by a greeter.  So they won't expect an IDLE
+                       call during that.  Plus, this isn't time-sensitive. */
+                    g_idle_add (set_greeter_idle, greeter);
                 }
             }
             else
diff --git a/tests/scripts/unity-mir-switch-to-user-resettable.conf b/tests/scripts/unity-mir-switch-to-user-resettable.conf
new file mode 100644 (file)
index 0000000..e594c04
--- /dev/null
@@ -0,0 +1,58 @@
+#
+# Check can run a Mir greeter from a VT based seat
+# Uses a resettable greeter
+#
+
+[SeatDefaults]
+type=unity
+user-session=mir
+
+[test-greeter-config]
+resettable=true
+
+#?*START-DAEMON
+#?RUNNER DAEMON-START
+
+# System compositor starts
+#?UNITY-SYSTEM-COMPOSITOR START FILE=/tmp/mir_socket VT=7 XDG_VTNR=7
+#?*UNITY-SYSTEM-COMPOSITOR READY
+
+# Greeter starts
+#?GREETER-MIR-greeter-0 START XDG_SEAT=seat0 XDG_VTNR=7 XDG_SESSION_CLASS=greeter
+#?LOGIN1 ACTIVATE-SESSION SESSION=c0
+#?GREETER-MIR-greeter-0 CONNECT-TO-DAEMON
+#?GREETER-MIR-greeter-0 CONNECTED-TO-DAEMON
+#?UNITY-SYSTEM-COMPOSITOR SET-ACTIVE-SESSION ID=greeter-0
+
+# Log into account with a password
+#?*GREETER-MIR-greeter-0 AUTHENTICATE USERNAME=no-password1
+#?GREETER-MIR-greeter-0 AUTHENTICATION-COMPLETE USERNAME=no-password1 AUTHENTICATED=TRUE
+#?*GREETER-MIR-greeter-0 START-SESSION
+
+# Session starts
+#?SESSION-MIR-session-0 START XDG_SEAT=seat0 XDG_VTNR=7 XDG_GREETER_DATA_DIR=.*/no-password1 XDG_SESSION_TYPE=mir XDG_SESSION_DESKTOP=mir USER=no-password1
+#?LOGIN1 ACTIVATE-SESSION SESSION=c1
+#?GREETER-MIR-greeter-0 IDLE
+#?UNITY-SYSTEM-COMPOSITOR SET-ACTIVE-SESSION ID=session-0
+
+# Switch to an account with a password
+#?*SWITCH-TO-USER USERNAME=have-password2
+#?RUNNER SWITCH-TO-USER USERNAME=have-password2
+
+# Switch to greeter
+#?LOGIN1 LOCK-SESSION
+#?GREETER-MIR-greeter-0 RESET
+#?LOGIN1 ACTIVATE-SESSION SESSION=c0
+#?UNITY-SYSTEM-COMPOSITOR SET-ACTIVE-SESSION ID=greeter-0
+
+# Requested user is automatically selected
+#?GREETER-MIR-greeter-0 SELECT-USER-HINT USERNAME=have-password2
+#?*GREETER-MIR-greeter-0 AUTHENTICATE USERNAME=have-password2
+#?GREETER-MIR-greeter-0 SHOW-PROMPT TEXT="Password:"
+
+# Cleanup
+#?*STOP-DAEMON
+#?GREETER-MIR-greeter-0 TERMINATE SIGNAL=15
+#?SESSION-MIR-session-0 TERMINATE SIGNAL=15
+#?UNITY-SYSTEM-COMPOSITOR TERMINATE SIGNAL=15
+#?RUNNER DAEMON-EXIT STATUS=0
diff --git a/tests/test-unity-mir-switch-to-user-resettable b/tests/test-unity-mir-switch-to-user-resettable
new file mode 100755 (executable)
index 0000000..e458200
--- /dev/null
@@ -0,0 +1,2 @@
+#!/bin/sh
+./src/dbus-env ./src/test-runner unity-mir-switch-to-user-resettable test-mir-greeter