commit c6cacf0123c08c21fbe49d48b0cdb86ad6a647cb Author: Oswald Buddenhagen <ossi@kde.org> Date: Sat Oct 1 11:04:50 2011 +0200 lock screen _before_ switching session otherwise the lock won't be able to kick in until the session gets re-activated, which leaves a race condition. BUG: 206339 FIXED-IN: 4.7.3 (cherry picked from commit e8416bf807f399fc9748528f3b186eb78123b857) diff --git a/libs/kworkspace/kdisplaymanager.cpp b/libs/kworkspace/kdisplaymanager.cpp index bd5c974..9a19295 100644 --- a/libs/kworkspace/kdisplaymanager.cpp +++ b/libs/kworkspace/kdisplaymanager.cpp @@ -596,10 +596,11 @@ KDisplayManager::switchVT(int vt) void KDisplayManager::lockSwitchVT(int vt) { - if (switchVT(vt)) { - QDBusInterface screensaver("org.freedesktop.ScreenSaver", "/ScreenSaver", "org.freedesktop.ScreenSaver"); - screensaver.call("Lock"); - } + // Lock first, otherwise the lock won't be able to kick in until the session is re-activated. + QDBusInterface screensaver("org.freedesktop.ScreenSaver", "/ScreenSaver", "org.freedesktop.ScreenSaver"); + screensaver.call("Lock"); + + switchVT(vt); } void