diff options
author | Ray Strode <rstrode@redhat.com> | 2015-10-17 15:01:17 -0400 |
---|---|---|
committer | Ray Strode <rstrode@redhat.com> | 2015-10-17 15:04:51 -0400 |
commit | 711dd044448c29a93798edeced1faf0aff7a864e (patch) | |
tree | 53d72dfe03a949a5088621c6c254d1c5c50fdcc6 | |
parent | 87b11cc409503cddd24042704266a234e9c6534a (diff) | |
download | mutter-wip/halfline/black-stage-before-dpms-off.tar.gz |
xrandr: set stage to black before dpms offwip/halfline/black-stage-before-dpms-off
redraws aren't processed when dpms has been turned
off, so we need to set the stage to black before
the screen goes dark, so that when it comes back
it's not showing stale contents.
-rw-r--r-- | src/backends/x11/meta-monitor-manager-xrandr.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/backends/x11/meta-monitor-manager-xrandr.c b/src/backends/x11/meta-monitor-manager-xrandr.c index 900884170..3c114cf71 100644 --- a/src/backends/x11/meta-monitor-manager-xrandr.c +++ b/src/backends/x11/meta-monitor-manager-xrandr.c @@ -43,6 +43,8 @@ #include <meta/errors.h> #include "meta-monitor-config.h" +#include "meta-stage.h" + #define ALL_TRANSFORMS ((1 << (META_MONITOR_TRANSFORM_FLIPPED_270 + 1)) - 1) /* Look for DPI_FALLBACK in: @@ -647,6 +649,23 @@ get_xmode_name (XRRModeInfo *xmode) } static void +update_stage_visibility_for_power_save_mode (MetaMonitorManager *manager) +{ + MetaBackend *backend = meta_get_backend (); + ClutterActor *stage = meta_backend_get_stage (backend); + + if ((manager->power_save_mode != META_POWER_SAVE_ON) && + (manager->power_save_mode != META_POWER_SAVE_UNSUPPORTED)) + { + meta_stage_set_black (META_STAGE (stage), TRUE); + } + else + { + meta_stage_set_black (META_STAGE (stage), FALSE); + } +} + +static void meta_monitor_manager_xrandr_read_current (MetaMonitorManager *manager) { MetaMonitorManagerXrandr *manager_xrandr = META_MONITOR_MANAGER_XRANDR (manager); @@ -693,6 +712,8 @@ meta_monitor_manager_xrandr_read_current (MetaMonitorManager *manager) manager->power_save_mode = META_POWER_SAVE_UNSUPPORTED; } + update_stage_visibility_for_power_save_mode (manager); + XRRGetScreenSizeRange (manager_xrandr->xdisplay, DefaultRootWindow (manager_xrandr->xdisplay), &min_width, &min_height, |