summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--core/launcher/desktop.cpp40
1 files changed, 22 insertions, 18 deletions
diff --git a/core/launcher/desktop.cpp b/core/launcher/desktop.cpp
index 387650b..d2bd8ae 100644
--- a/core/launcher/desktop.cpp
+++ b/core/launcher/desktop.cpp
@@ -167,11 +167,13 @@ public:
167 167
168 m_lcd_status = true; 168 m_lcd_status = true;
169 169
170 m_backlight_bright = -1; 170 m_backlight_normal = -1;
171 m_backlight_current = -1;
171 m_backlight_forcedoff = false; 172 m_backlight_forcedoff = false;
172 173
173 // Make sure the LCD is in fact on, (if opie was killed while the LCD is off it would still be off) 174 // Make sure the LCD is in fact on, (if opie was killed while the LCD is off it would still be off)
174 ODevice::inst ( ) -> setDisplayStatus ( true ); 175 ODevice::inst ( ) -> setDisplayStatus ( true );
176 setBacklight ( -1 );
175 } 177 }
176 void restore() 178 void restore()
177 { 179 {
@@ -180,21 +182,21 @@ public:
180 m_lcd_status = true; 182 m_lcd_status = true;
181 } 183 }
182 184
183 setBacklight ( -1 ); 185 setBacklightInternal ( -1 );
184 } 186 }
185 bool save( int level ) 187 bool save( int level )
186 { 188 {
187 switch ( level ) { 189 switch ( level ) {
188 case 0: 190 case 0:
189 if ( m_disable_suspend > 0 && m_enable_dim ) { 191 if ( m_disable_suspend > 0 && m_enable_dim ) {
190 if ( backlight() > 1 ) 192 if ( m_backlight_current > 1 )
191 setBacklight( 1 ); // lowest non-off 193 setBacklightInternal ( 1 ); // lowest non-off
192 } 194 }
193 return true; 195 return true;
194 break; 196 break;
195 case 1: 197 case 1:
196 if ( m_disable_suspend > 1 && m_enable_lightoff ) { 198 if ( m_disable_suspend > 1 && m_enable_lightoff ) {
197 setBacklight( 0 ); // off 199 setBacklightInternal ( 0 ); // off
198 } 200 }
199 return true; 201 return true;
200 break; 202 break;
@@ -270,18 +272,18 @@ public:
270 m_disable_suspend = mode; 272 m_disable_suspend = mode;
271 } 273 }
272 274
273 int backlight ( ) 275 void setBacklight ( int bright )
274 { 276 {
275 if ( m_backlight_bright == -1 ) {
276 // Read from config 277 // Read from config
277 Config config ( "qpe" ); 278 Config config ( "qpe" );
278 config. setGroup ( "Screensaver" ); 279 config. setGroup ( "Screensaver" );
279 m_backlight_bright = config. readNumEntry ( "Brightness", 255 ); 280 m_backlight_normal = config. readNumEntry ( "Brightness", 255 );
280 } 281
281 return m_backlight_bright; 282 setBacklightInternal ( bright );
282 } 283 }
283 284
284 void setBacklight ( int bright ) 285private:
286 void setBacklightInternal ( int bright )
285 { 287 {
286 if ( bright == -3 ) { 288 if ( bright == -3 ) {
287 // Forced on 289 // Forced on
@@ -292,18 +294,19 @@ public:
292 return ; 294 return ;
293 if ( bright == -2 ) { 295 if ( bright == -2 ) {
294 // Toggle between off and on 296 // Toggle between off and on
295 bright = m_backlight_bright ? 0 : -1; 297 bright = m_backlight_current ? 0 : -1;
296 m_backlight_forcedoff = !bright; 298 m_backlight_forcedoff = !bright;
297 } 299 }
300 if ( bright == -1 )
301 bright = m_backlight_normal;
298 302
299 m_backlight_bright = bright; 303 if ( bright != m_backlight_current ) {
300
301 bright = backlight ( );
302 ODevice::inst ( ) -> setDisplayBrightness ( bright ); 304 ODevice::inst ( ) -> setDisplayBrightness ( bright );
303 305 m_backlight_current = bright;
304 m_backlight_bright = bright; 306 }
305 } 307 }
306 308
309public:
307 void setDisplayState ( bool on ) 310 void setDisplayState ( bool on )
308 { 311 {
309 if ( m_lcd_status != on ) { 312 if ( m_lcd_status != on ) {
@@ -320,7 +323,8 @@ private:
320 323
321 bool m_lcd_status; 324 bool m_lcd_status;
322 325
323 int m_backlight_bright; 326 int m_backlight_normal;
327 int m_backlight_current;
324 bool m_backlight_forcedoff; 328 bool m_backlight_forcedoff;
325}; 329};
326 330