summaryrefslogtreecommitdiff
path: root/core
Side-by-side diff
Diffstat (limited to 'core') (more/less context) (ignore whitespace changes)
-rw-r--r--core/launcher/desktop.cpp34
1 files changed, 23 insertions, 11 deletions
diff --git a/core/launcher/desktop.cpp b/core/launcher/desktop.cpp
index 0e60839..d74b745 100644
--- a/core/launcher/desktop.cpp
+++ b/core/launcher/desktop.cpp
@@ -181,7 +181,7 @@ public:
m_lcd_status = true;
}
- setBacklight ( -3 );
+ setBacklight ( -1 );
}
bool save( int level )
{
@@ -332,12 +332,14 @@ void DesktopApplication::switchLCD ( bool on )
DesktopApplication *dapp = (DesktopApplication *) qApp;
if ( dapp-> m_screensaver ) {
- if ( on )
- dapp-> m_screensaver-> restore ( ); //setBacklight ( on ? -3 : -1 );
- else
- dapp-> m_screensaver-> save ( 1 );
-
- }
+ if ( on ) {
+ dapp-> m_screensaver-> setDisplayState ( true );
+ dapp-> m_screensaver-> setBacklight ( -3 );
+ }
+ else {
+ dapp-> m_screensaver-> setDisplayState ( false );
+ }
+ }
}
}
@@ -862,7 +864,7 @@ void Desktop::togglePower()
qDebug ( "togglePower (locked == %d)", excllock ? 1 : 0 );
if ( excllock )
- return ;
+ return;
excllock = true;
@@ -870,17 +872,27 @@ void Desktop::togglePower()
loggedin = 0;
suspendTime = QDateTime::currentDateTime();
- ODevice::inst ( ) -> suspend ( );
+#ifdef QWS
+ if ( Password::needToAuthenticate ( true ) && qt_screen ) {
+ // Should use a big black window instead.
+ // But this would not show up fast enough
+ QGfx *g = qt_screen-> screenGfx ( );
+ g-> fillRect ( 0, 0, qt_screen-> width ( ), qt_screen-> height ( ));
+ delete g;
+ }
+#endif
+
+ ODevice::inst ( )-> suspend ( );
- QWSServer::screenSaverActivate ( false );
DesktopApplication::switchLCD ( true ); // force LCD on without slow qcop call
+ QWSServer::screenSaverActivate ( false );
{
QCopEnvelope( "QPE/Card", "mtabChanged()" ); // might have changed while asleep
}
if ( wasloggedin )
- login( TRUE );
+ login ( true );
execAutoStart();
//qcopBridge->closeOpenConnections();