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)
{
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
--- /dev/null
+#
+# 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