Branch: master

c7056bbf 2014-11-21 18:31:16 Timothy Pearson
Fix VT switch showing previous users desktop for a short time
M tdmlib/dmctl.cpp
diff --git a/tdmlib/dmctl.cpp b/tdmlib/dmctl.cpp
index c4fc0a5..6ee7722 100644
--- a/tdmlib/dmctl.cpp
+++ b/tdmlib/dmctl.cpp
@@ -392,13 +392,17 @@
 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);
+		}
 	}
 }