summaryrefslogtreecommitdiffstats
path: root/kdesktop/lock/lockprocess.cc
diff options
context:
space:
mode:
Diffstat (limited to 'kdesktop/lock/lockprocess.cc')
-rw-r--r--kdesktop/lock/lockprocess.cc19
1 files changed, 19 insertions, 0 deletions
diff --git a/kdesktop/lock/lockprocess.cc b/kdesktop/lock/lockprocess.cc
index a0d8b781e..ff12d2059 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),
@@ -1091,6 +1093,8 @@ void LockProcess::createSaverWindow()
}
}
+ fullyOnline();
+
kdDebug(1204) << "Saver window Id: " << winId() << endl;
}
@@ -2751,4 +2755,19 @@ void LockProcess::slotMouseActivity(XEvent *event)
}
}
+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;
+ }
+ }
+ }
+}
+
#include "lockprocess.moc"