Branch: master

dd295139 2015-09-19 18:57:39 Timothy Pearson
Prevent saver from starting while valid card is inserted
M kdesktop/lockeng.cc
diff --git a/kdesktop/lockeng.cc b/kdesktop/lockeng.cc
index 5173916..0c7558f 100644
--- a/kdesktop/lockeng.cc
+++ b/kdesktop/lockeng.cc
@@ -247,21 +247,20 @@
 		KUser user;
 		if (login_name == user.loginName()) {
 			mValidCryptoCardInserted = true;
-			// Disable saver startup
-			enable(false);
 		}
 	}
 }
 
 void SaverEngine::cryptographicCardRemoved(TDECryptographicCardDevice* cdevice) {
 	if (mValidCryptoCardInserted) {
+		mValidCryptoCardInserted = false;
+
 		// Restore saver timeout
 		configure();
 
 		// Force lock
 		lockScreen();
 	}
-	mValidCryptoCardInserted = false;
 }
 
 //---------------------------------------------------------------------------
@@ -279,6 +278,10 @@
 //
 void SaverEngine::lockScreen(bool DCOP)
 {
+	if (mValidCryptoCardInserted) {
+		return;
+	}
+
 	bool ok = true;
 	if (mState != Saving)
 	{
@@ -328,9 +331,10 @@
 //---------------------------------------------------------------------------
 void SaverEngine::save()
 {
-	if (mState == Waiting)
-	{
-		startLockProcess( DefaultLock );
+	if (!mValidCryptoCardInserted) {
+		if (mState == Waiting) {
+			startLockProcess( DefaultLock );
+		}
 	}
 }
 
@@ -727,10 +731,12 @@
 //
 void SaverEngine::idleTimeout()
 {
-	// disable X screensaver
-	XForceScreenSaver(tqt_xdisplay(), ScreenSaverReset );
-	XSetScreenSaver(tqt_xdisplay(), 0, mXInterval, PreferBlanking, DontAllowExposures);
-	startLockProcess( DefaultLock );
+	if (!mValidCryptoCardInserted) {
+		// disable X screensaver
+		XForceScreenSaver(tqt_xdisplay(), ScreenSaverReset );
+		XSetScreenSaver(tqt_xdisplay(), 0, mXInterval, PreferBlanking, DontAllowExposures);
+		startLockProcess( DefaultLock );
+	}
 }
 
 xautolock_corner_t SaverEngine::applyManualSettings(int action)