diff --git a/tdmlib/dmctl.cpp b/tdmlib/dmctl.cpp index c4fc0a5dd..6ee7722a2 100644 --- a/tdmlib/dmctl.cpp +++ b/tdmlib/dmctl.cpp @@ -392,13 +392,17 @@ DM::switchVT( int vt ) void DM::lockSwitchVT( int vt ) { - if (switchVT( vt )) { + if (isSwitchable()) { TQByteArray data; TQCString replyType; TQByteArray replyData; // Block here until lock is complete // If this is not done the desktop of the locked session will be shown after VT switch until the lock fully engages! kapp->dcopClient()->call("kdesktop", "KScreensaverIface", "lock()", data, replyType, replyData); + if (!switchVT( vt )) { + // Switching VT failed; unlock... + kapp->dcopClient()->call("kdesktop", "KScreensaverIface", "unlock()", data, replyType, replyData); + } } }