Fix secondary thread termination

This resolves the remainder of Bug 1467
pull/2/head
Timothy Pearson 11 years ago
parent f003ff9cd0
commit edf3004ec3

@ -376,16 +376,18 @@ void LockProcess::init(bool child, bool useBlankOnly)
connect(&mSuspendTimer, TQT_SIGNAL(timeout()), TQT_SLOT(suspend())); connect(&mSuspendTimer, TQT_SIGNAL(timeout()), TQT_SLOT(suspend()));
#ifdef HAVE_DPMS #ifdef HAVE_DPMS
if (mDPMSDepend) { //if the user decided that the screensaver should run independent from
//dpms, we shouldn't check for it, aleXXX
if (KDesktopSettings::dpmsDependent()) {
BOOL on; BOOL on;
CARD16 state; CARD16 state;
DPMSInfo(tqt_xdisplay(), &state, &on); if (DPMSInfo(tqt_xdisplay(), &state, &on)) {
if (on) if (on) {
{ connect(&mCheckDPMS, TQT_SIGNAL(timeout()), TQT_SLOT(checkDPMSActive()));
connect(&mCheckDPMS, TQT_SIGNAL(timeout()), TQT_SLOT(checkDPMSActive())); // we can save CPU if we stop it as quickly as possible
// we can save CPU if we stop it as quickly as possible // but we waste CPU if we check too often -> so take 10s
// but we waste CPU if we check too often -> so take 10s mCheckDPMS.start(10000);
mCheckDPMS.start(10000); }
} }
} }
#endif #endif
@ -729,12 +731,6 @@ void LockProcess::configure()
mAutoLogoutTimerId = startTimer(mAutoLogoutTimeout * 1000); // in milliseconds mAutoLogoutTimerId = startTimer(mAutoLogoutTimeout * 1000); // in milliseconds
} }
#ifdef HAVE_DPMS
//if the user decided that the screensaver should run independent from
//dpms, we shouldn't check for it, aleXXX
mDPMSDepend = KDesktopSettings::dpmsDependent();
#endif
mPriority = KDesktopSettings::priority(); mPriority = KDesktopSettings::priority();
if (mPriority < 0) mPriority = 0; if (mPriority < 0) mPriority = 0;
if (mPriority > 19) mPriority = 19; if (mPriority > 19) mPriority = 19;
@ -2702,6 +2698,7 @@ void ControlPipeHandlerObject::run(void) {
if (display_number < 0) { if (display_number < 0) {
printf("[kdesktop_lock] Warning: unable to create control socket. Interactive logon modules may not function properly.\n\r"); printf("[kdesktop_lock] Warning: unable to create control socket. Interactive logon modules may not function properly.\n\r");
TQApplication::eventLoop()->exit(-1);
return; return;
} }
@ -2731,6 +2728,7 @@ void ControlPipeHandlerObject::run(void) {
if (!mParent->mPipeOpen) { if (!mParent->mPipeOpen) {
printf("[kdesktop_lock] Warning: unable to create control socket '%s'. Interactive logon modules may not function properly.\n\r", fifo_file); printf("[kdesktop_lock] Warning: unable to create control socket '%s'. Interactive logon modules may not function properly.\n\r", fifo_file);
TQApplication::eventLoop()->exit(-1);
return; return;
} }
@ -2760,6 +2758,9 @@ void ControlPipeHandlerObject::run(void) {
} }
} }
} }
TQApplication::eventLoop()->exit(0);
return;
} }
#include "lockprocess.moc" #include "lockprocess.moc"

@ -174,7 +174,6 @@ private:
bool mSuspended; bool mSuspended;
TQTimer mSuspendTimer; TQTimer mSuspendTimer;
bool mVisibility; bool mVisibility;
bool mDPMSDepend;
TQTimer mCheckDPMS; TQTimer mCheckDPMS;
TQValueStack< TQWidget* > mDialogs; TQValueStack< TQWidget* > mDialogs;
bool mRestoreXF86Lock; bool mRestoreXF86Lock;

@ -1259,6 +1259,7 @@ void ControlPipeHandlerObject::run(void) {
while (1) { while (1) {
if ((mKGreeterParent && (mKGreeterParent->closingDown)) || (mSAKDlgParent && (mSAKDlgParent->closingDown))) { if ((mKGreeterParent && (mKGreeterParent->closingDown)) || (mSAKDlgParent && (mSAKDlgParent->closingDown))) {
::unlink(mPipeFilename.ascii()); ::unlink(mPipeFilename.ascii());
TQApplication::eventLoop()->exit(-1);
return; return;
} }
@ -1297,6 +1298,7 @@ void ControlPipeHandlerObject::run(void) {
if ((file_mode != 600) || (buffer.st_uid != 0) || (buffer.st_gid != 0)) { if ((file_mode != 600) || (buffer.st_uid != 0) || (buffer.st_gid != 0)) {
::unlink(mPipeFilename.ascii()); ::unlink(mPipeFilename.ascii());
printf("[WARNING] Possible security breach! Please check permissions on " FIFO_DIR " (must be 600 and owned by root/root, got %d %d/%d). Not listening for login credentials on remote control socket.\n", file_mode, buffer.st_uid, buffer.st_gid); fflush(stdout); printf("[WARNING] Possible security breach! Please check permissions on " FIFO_DIR " (must be 600 and owned by root/root, got %d %d/%d). Not listening for login credentials on remote control socket.\n", file_mode, buffer.st_uid, buffer.st_gid); fflush(stdout);
TQApplication::eventLoop()->exit(-1);
return; return;
} }
} }
@ -1327,6 +1329,7 @@ void ControlPipeHandlerObject::run(void) {
} }
if ((mKGreeterParent && (mKGreeterParent->closingDown)) || (mSAKDlgParent && (mSAKDlgParent->closingDown))) { if ((mKGreeterParent && (mKGreeterParent->closingDown)) || (mSAKDlgParent && (mSAKDlgParent->closingDown))) {
::unlink(mPipeFilename.ascii()); ::unlink(mPipeFilename.ascii());
TQApplication::eventLoop()->exit(-1);
return; return;
} }
@ -1338,10 +1341,12 @@ void ControlPipeHandlerObject::run(void) {
} }
else { else {
::unlink(mPipeFilename.ascii()); ::unlink(mPipeFilename.ascii());
TQApplication::eventLoop()->exit(-1);
return; return;
} }
} }
} }
TQApplication::eventLoop()->exit(-1);
} }
#include "kgreeter.moc" #include "kgreeter.moc"

Loading…
Cancel
Save