diff options
author | Robert Ancell <robert.ancell@canonical.com> | 2012-01-31 16:25:20 +1100 |
---|---|---|
committer | Robert Ancell <robert.ancell@canonical.com> | 2012-01-31 16:25:20 +1100 |
commit | 9f6381ff99c2506716637e0ac3036d2bb06504e7 (patch) | |
tree | 37524efd3d0c8db449f8b0aa880d459bcec92bf8 | |
parent | 8393e6c0cd4fe59c938af816f5ee34b6e47a576a (diff) | |
download | lightdm-9f6381ff99c2506716637e0ac3036d2bb06504e7.tar.gz |
Wait for the VT to become active when switching to avoid a suspected race condition somewhere between LightDM, X, ConsoleKit and the kernel
-rw-r--r-- | NEWS | 3 | ||||
-rw-r--r-- | src/vt.c | 8 |
2 files changed, 11 insertions, 0 deletions
@@ -3,6 +3,9 @@ Overview of changes in lightdm 1.1.2 * Add regression tests for getting the user language and layout * Stop accidentally distributing libsystem * Fix introspection bindings not containing any methods + * lightdm-set-defaults can now set the autologin user + * Wait for the VT to become active when switching to avoid a suspected + race condition somewhere between LightDM, X, ConsoleKit and the kernel. Overview of changes in lightdm 1.1.1 @@ -80,8 +80,16 @@ vt_set_active (gint number) if (console_fd >= 0) { int n = number; + if (ioctl (console_fd, VT_ACTIVATE, n) < 0) g_warning ("Error using VT_ACTIVATE %d on /dev/console: %s", n, strerror (errno)); + + /* Wait for the VT to become active to avoid a suspected + * race condition somewhere between LightDM, X, ConsoleKit and the kernel. + * See https://bugs.launchpad.net/bugs/851612 */ + if (ioctl (console_fd, VT_WAITACTIVE) < 0) + g_warning ("Error using VT_WAITACTIVE %d on /dev/console: %s", n, strerror (errno)); + close (console_fd); } #endif |