Fix kdesktop_lock XRandR event handling

(cherry picked from commit b70ccd542a)
v3.5.13-sru
Timothy Pearson 12 years ago committed by Slávek Banko
parent 8267e23906
commit f0e7224bc3

@ -182,6 +182,7 @@ LockProcess::LockProcess()
mHackDelayStartupTimer(NULL), mHackDelayStartupTimer(NULL),
mHackDelayStartupTimeout(0), mHackDelayStartupTimeout(0),
mHackStartupEnabled(true), mHackStartupEnabled(true),
mResizingDesktopLock(false),
m_rootPixmap(NULL), m_rootPixmap(NULL),
mBackingStartupDelayTimer(0), mBackingStartupDelayTimer(0),
m_startupStatusDialog(NULL), m_startupStatusDialog(NULL),
@ -961,7 +962,10 @@ void LockProcess::createSaverWindow()
void LockProcess::desktopResized() void LockProcess::desktopResized()
{ {
mBusy = true; mBusy = true;
suspend(); mHackDelayStartupTimer->stop();
stopHack();
DISABLE_CONTINUOUS_LOCKDLG_DISPLAY
mResizingDesktopLock = true;
// Get root window size // Get root window size
XWindowAttributes rootAttr; XWindowAttributes rootAttr;
@ -987,13 +991,12 @@ void LockProcess::desktopResized()
void LockProcess::doDesktopResizeFinish() void LockProcess::doDesktopResizeFinish()
{ {
stopHack();
while (mDialogControlLock == true) usleep(100000); while (mDialogControlLock == true) usleep(100000);
mDialogControlLock = true; mDialogControlLock = true;
if (closeCurrentWindow()) { if (closeCurrentWindow()) {
TQTimer::singleShot( 0, this, SLOT(doDesktopResizeFinish()) ); TQTimer::singleShot( 0, this, SLOT(doDesktopResizeFinish()) );
mDialogControlLock = false; mDialogControlLock = false;
return;
} }
mDialogControlLock = false; mDialogControlLock = false;
@ -1016,6 +1019,7 @@ void LockProcess::doDesktopResizeFinish()
} }
} }
mResizingDesktopLock = false;
mBusy = false; mBusy = false;
} }
@ -1801,8 +1805,10 @@ int LockProcess::execDialog( TQDialog *dlg )
hackResumeTimer = new TQTimer( this ); hackResumeTimer = new TQTimer( this );
connect( hackResumeTimer, TQT_SIGNAL(timeout()), this, TQT_SLOT(resumeUnforced()) ); connect( hackResumeTimer, TQT_SIGNAL(timeout()), this, TQT_SLOT(resumeUnforced()) );
} }
if (mResizingDesktopLock == false) {
hackResumeTimer->start( 10, TRUE ); hackResumeTimer->start( 10, TRUE );
} }
}
else { else {
resume( false ); resume( false );
} }
@ -1976,8 +1982,26 @@ bool LockProcess::x11Event(XEvent *event)
else else
{ {
mSuspendTimer.stop(); mSuspendTimer.stop();
if (mResizingDesktopLock == false) {
if (trinity_desktop_lock_delay_screensaver_start && trinity_desktop_lock_forced && trinity_desktop_lock_use_system_modal_dialogs) {
ENABLE_CONTINUOUS_LOCKDLG_DISPLAY
if (mHackStartupEnabled) mHackDelayStartupTimer->start(mHackDelayStartupTimeout, TRUE);
}
else {
if (mHackStartupEnabled == true) {
resume( false ); resume( false );
} }
else {
if (trinity_desktop_lock_use_system_modal_dialogs == true) {
ENABLE_CONTINUOUS_LOCKDLG_DISPLAY
}
else {
resume( false );
}
}
}
}
}
if (event->xvisibility.state != VisibilityUnobscured) if (event->xvisibility.state != VisibilityUnobscured)
stayOnTop(); stayOnTop();
} }
@ -2076,8 +2100,10 @@ void LockProcess::checkDPMSActive()
suspend(); suspend();
} else if ( mSuspended ) } else if ( mSuspended )
{ {
if (mResizingDesktopLock == false) {
resume( true ); resume( true );
} }
}
#endif #endif
} }

@ -192,6 +192,7 @@ private:
int mHackDelayStartupTimeout; int mHackDelayStartupTimeout;
bool mHackStartupEnabled; bool mHackStartupEnabled;
bool mResizingDesktopLock;
TQPixmap backingPixmap; TQPixmap backingPixmap;
KRootPixmap *m_rootPixmap; KRootPixmap *m_rootPixmap;

Loading…
Cancel
Save