[maemo-developers] [maemo-developers] How to determine if the screen has turned off?

From: David Weinehall david.weinehall at nokia.com
Date: Thu Dec 14 13:04:11 EET 2006
On tor, 2006-12-14 at 11:01 +0200, ext Kimmo Hämäläinen wrote:
> On Wed, 2006-12-13 at 15:22 -0800, ext Aaron Levinson wrote:
> > On Wed, 13 Dec 2006, Johan Bilien wrote:
> > 
> > > On Wed, Dec 13, 2006, Aaron Levinson wrote:
> > > > In the Maemo coding style and programming guidelines document on
> > > > maemo.org, it states the following:  "Avoid updating the GUI when the
> > > > application running on the background and when the screen has been turned
> > > > off. Remove unnecessary graphical elements or constantly updated screen
> > > > components."  Now, it appears that hildon_window_get_is_topmost() or
> > > > hildon_program_get_is_topmost() can be used to determine if an application
> > > > is running in the background, but how does one programmatically determine
> > > > if the screen has been turned off?  I see in the latest version of libosso
> > > > in SVN that there is a muali API that provides the ability to access the
> > > > information via a callback, but it is unclear how to determine this on 2.0
> > > > or 2.1.  Perhaps I can use XScreenSaverQueryInfo() ?
> > > 
> > > http://maemo.org/platform/docs/api/libosso/html/index.html
> > > 
> > > You can register a callback with osso_hw_set_event_cb, set the
> > > system_inactivity_ind flag in the osso_hw_state_t argument.
> > 
> > Well, I had already examining the libosso APIs before sending the e-mail,
> > and I did notice the system_inactivity_ind flag in the osso_hw_state_t
> > struct.  However, according to the libosso documentation, if the callback
> > is called for system inactivity, this means that "the application should
> > reduce its activity".  I didn't directly associate this text with the
> > screen being blanked, which I think is understandable, since screen
> > blanking is not the same thing.
> > 
> > What are the conditions that result in the callback for the system 
> > inactivity indicator being called?  The statement "the application should 
> > reduce its activity" is somewhat open-ended, and perhaps this callback is 
> > used for more than just to indicate that the screen has been blanked.
> It's not clear to me either, but you can use the system_inactivity_ind
> for the display on/off information as well (I added that to the trunk
> libosso.h). I have verified this from the MCE guys some time ago.

(MCE guys -- that'd be me, I guess?)

Basically, the system_inactivity_ind should not be used for display
on/off information, since activity is supposed to be tied to user
activity, not screen state; the system can be inactive but still have
the display on (however, MCE will not report it as inactive in that
case).  Sadly some applications relies on the display <-> activity
connection, so MCE reports display on as activity, and it will still
remain supported for a few releases to come.  However, I want to make it
clear that this is not the proper way to do it, and that such an
assumption will be incorrect in the long run. 

 I guess the big problem is that there really hasn't been any proper way
to do things...  The next version of MCE will introduce a new D-Bus
signal for this purpose (display_status_ind, and the companion
method-call get_display_status), and one or two releases later the old
behaviour will no longer be supported.  Hopefully these signals will
also be taken in use by libosso.


Regards: David

More information about the maemo-developers mailing list