summaryrefslogtreecommitdiff
authorsandman <sandman>2002-10-21 11:52:48 (UTC)
committer sandman <sandman>2002-10-21 11:52:48 (UTC)
commit2c163c9f70dabb90c189a93c1f34dbc2f54849f6 (patch) (unidiff)
treeeb7942c6f23282f0038b7feec27b7148d3895d7d
parent10a7608882119da90d5c294f75cbbc09bba3ca4a (diff)
downloadopie-2c163c9f70dabb90c189a93c1f34dbc2f54849f6.zip
opie-2c163c9f70dabb90c189a93c1f34dbc2f54849f6.tar.gz
opie-2c163c9f70dabb90c189a93c1f34dbc2f54849f6.tar.bz2
Speed (and sanity ;) optimization:
Until now the launcher parsed qpe.conf, open the ts device, set the backlight with an ioctl and closed the device again on *every* keypress or stylus tap. This is only done now, when it is really necessary (~1% of all cases). Additionally this allows easier integration of the iPAQ light-sensor.
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/launcher/desktop.cpp56
1 files changed, 30 insertions, 26 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
@@ -166,42 +166,44 @@ public:
166 m_enable_onlylcdoff = false; 166 m_enable_onlylcdoff = false;
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 {
178 if ( !m_lcd_status ) { // We must have turned it off 180 if ( !m_lcd_status ) { // We must have turned it off
179 ODevice::inst ( ) -> setDisplayStatus ( true ); 181 ODevice::inst ( ) -> setDisplayStatus ( true );
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;
201 case 2: 203 case 2:
202 if ( m_enable_onlylcdoff ) { 204 if ( m_enable_onlylcdoff ) {
203 ODevice::inst ( ) -> setDisplayStatus ( false ); 205 ODevice::inst ( )-> setDisplayStatus ( false );
204 m_lcd_status = false; 206 m_lcd_status = false;
205 return true; 207 return true;
206 } 208 }
207 else // We're going to suspend the whole machine 209 else // We're going to suspend the whole machine
@@ -268,21 +270,21 @@ public:
268 if ( mode > m_disable_suspend ) 270 if ( mode > m_disable_suspend )
269 setInterval( -1 ); 271 setInterval( -1 );
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 ) { 277 // Read from config
276 // Read from config 278 Config config ( "qpe" );
277 Config config ( "qpe" ); 279 config. setGroup ( "Screensaver" );
278 config. setGroup ( "Screensaver" ); 280 m_backlight_normal = config. readNumEntry ( "Brightness", 255 );
279 m_backlight_bright = config. readNumEntry ( "Brightness", 255 ); 281
280 } 282 setBacklightInternal ( bright );
281 return m_backlight_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
288 m_backlight_forcedoff = false; 290 m_backlight_forcedoff = false;
@@ -291,20 +293,21 @@ public:
291 if ( m_backlight_forcedoff && bright != -2 ) 293 if ( m_backlight_forcedoff && bright != -2 )
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 }
298 300 if ( bright == -1 )
299 m_backlight_bright = bright; 301 bright = m_backlight_normal;
300 302
301 bright = backlight ( ); 303 if ( bright != m_backlight_current ) {
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 ) {
310 ODevice::inst ( ) -> setDisplayStatus ( on ); 313 ODevice::inst ( ) -> setDisplayStatus ( on );
@@ -319,9 +322,10 @@ private:
319 bool m_enable_onlylcdoff; 322 bool m_enable_onlylcdoff;
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
327void DesktopApplication::switchLCD ( bool on ) 331void DesktopApplication::switchLCD ( bool on )