From 3cce16c2543ebd7441477b466b35c89333eef28c Mon Sep 17 00:00:00 2001 From: Timothy Pearson Date: Fri, 3 May 2013 15:55:11 -0500 Subject: Properly fix task tray background glitches Ensure session is fully locked before switching to new VT when lock is requested --- kdesktop/lock/lockprocess.cc | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'kdesktop/lock/lockprocess.cc') diff --git a/kdesktop/lock/lockprocess.cc b/kdesktop/lock/lockprocess.cc index e7b05d73c..33fd374aa 100644 --- a/kdesktop/lock/lockprocess.cc +++ b/kdesktop/lock/lockprocess.cc @@ -173,6 +173,7 @@ extern bool trinity_desktop_lock_hide_active_windows; extern bool trinity_desktop_lock_forced; extern bool argb_visual; +extern pid_t kdesktop_pid; extern TQXLibWindowList trinity_desktop_lock_hidden_window_list; @@ -224,6 +225,7 @@ LockProcess::LockProcess() mHackStartupEnabled(true), mOverrideHackStartupEnabled(false), mResizingDesktopLock(false), + mFullyOnlineSent(false), m_rootPixmap(NULL), mBackingStartupDelayTimer(0), m_startupStatusDialog(NULL), @@ -973,6 +975,8 @@ void LockProcess::createSaverWindow() } } + fullyOnline(); + kdDebug(1204) << "Saver window Id: " << winId() << endl; } @@ -2739,6 +2743,21 @@ void LockProcess::processInputPipeCommand(TQString inputcommand) { } } +void LockProcess::fullyOnline() { + if (!mFullyOnlineSent) { + if (kdesktop_pid > 0) { + if (kill(kdesktop_pid, SIGUSR2) < 0) { + // The controlling kdesktop process probably died. Commit suicide... + // Exit uncleanly + exit(1); + } + else { + mFullyOnlineSent = true; + } + } + } +} + //=========================================================================== // // Control pipe handler -- cgit v1.2.3