From 78d33c29157b8e3a0b81c36f73ec5f958439565c Mon Sep 17 00:00:00 2001 From: Timothy Pearson Date: Mon, 13 Apr 2015 00:48:27 -0500 Subject: Ensure desktop is completely hidden before sending fullyOnline() Do not block kdesktop process while waiting for kdesktop_lock to engage prior to VT switch/new VT requests made from within kdesktop --- kdesktop/lockeng.cc | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'kdesktop/lockeng.cc') diff --git a/kdesktop/lockeng.cc b/kdesktop/lockeng.cc index 6ce26cf4e..27b57bc51 100644 --- a/kdesktop/lockeng.cc +++ b/kdesktop/lockeng.cc @@ -22,6 +22,8 @@ #include #include +#include + #include #include #include @@ -79,6 +81,8 @@ SaverEngine::SaverEngine() mSAKProcess(NULL), mTerminationRequested(false), mSaverProcessReady(false), + mNewVTAfterLockEngage(false), + mSwitchVTAfterLockEngage(-1), dBusLocal(0), dBusWatch(0), systemdSession(0) @@ -599,6 +603,15 @@ void SaverEngine::lockProcessFullyActivated() params << TQT_DBusData::fromBool(true); TQT_DBusMessage reply = systemdSession->sendWithReply("SetIdleHint", params); } + + if (mNewVTAfterLockEngage) { + DM().startReserve(); + mNewVTAfterLockEngage = false; + } + else if (mSwitchVTAfterLockEngage != -1) { + DM().switchVT(mSwitchVTAfterLockEngage); + mSwitchVTAfterLockEngage = -1; + } } void SaverEngine::slotLockProcessReady() @@ -854,6 +867,16 @@ bool SaverEngine::waitForLockEngage() { return mLockProcess.isRunning(); } +void SaverEngine::lockScreenAndDoNewSession() { + mNewVTAfterLockEngage = true; + lockScreen(); +} + +void SaverEngine::lockScreenAndSwitchSession(int vt) { + mSwitchVTAfterLockEngage = vt; + lockScreen(); +} + void SaverEngineThreadHelperObject::terminateThread() { TQEventLoop* eventLoop = TQApplication::eventLoop(); if (eventLoop) { -- cgit v1.2.1