Page MenuHomePhabricator

Screen doesn't blank if "disable blanking for fullscreen windows" is on, even when there's no fullscreen window
Closed, ResolvedPublic

Description

If I check "disable blanking for fullscreen windows" in Screen blank settings, the monitor doesn't blank on timeout. It fades to black and stays on with mouse cursor visible. Even when there's no fullscreen windows.
When I uncheck it, the screen fades to black then blanks.

The behavior that I expect is this:

  • With no fullscreen windows, the monitor should always fade to black then blank after timeout.
  • With a fullscreen windows it should not fade nor blank.

Tried with E 0.21.7 and efl 1.19.0
With efl 1.18 the screen faded to black then blanked even with fullscreen windows and "disable blanking for fullscreen windows" on.

Tichy created this task.May 6 2017, 4:36 AM
zmike reassigned this task from zmike to raster.May 6 2017, 7:13 AM
raster added a comment.May 6 2017, 9:28 PM

just a quick reply. it's definitley something in e. it calls ecore_x_dpms_enabled_set(0) when you check "disable blanking for fullscreen windows".

literally e_dpms_update() does this:

enabled = ((e_config->screensaver_enable) &&
           (!e_config->mode.presentation) &&
           ((!e_util_fullscreen_current_any()) &&
               (!e_config->no_dpms_on_fullscreen)));

then uses that for ecore_x_dpms_enabled_set().

so this doesn't look like an efl bug... e is deciding to disable dpms. in fact this is kind of wrong. the code there shouldn't care about fullscreen mode in e_dpms_update. it should be elsewhere were screensaver timeout is entirely decided. somehow when this feature was added it was added in the wrong places. the point is to not even have the screen dim to black etc. - to keep it on at full brightness right? then this belongs elsewhere... but this is seemingly structured wrong but it certainly is not an issue in efl. now i have to go over this in e and look there.

raster removed a project: efl.May 6 2017, 9:29 PM
raster added a comment.May 6 2017, 9:41 PM

ok. for starters... that enabled = logic is wrong. it should be:

enabled = ((e_config->screensaver_enable) &&
           (!e_config->mode.presentation) &&
           (!((e_util_fullscreen_current_any()) &&
              (e_config->no_dpms_on_fullscreen))));

that doesn't change the fact that this is all in the wrong place. when a window is fullscreen you end up with dpms off but the screensaver still kicking in.