Remove DPMS-on when going offscreen

Forcing DPMS on when we lose our session may force an expensive modeset
operation, which is pointless if the next consumer (another compositor,
or the console) is going to do a modeset. These should force DPMS on
regardless.

This actively causes problems for the DRM backend, in that it may
actually require a repaint to set coherent state for DPMS off -> DPMS on
transitions, which is very much not what we want when going offscreen.

As DRM is the only backend which actually implements DPMS, just remove
this call.

Differential Revision: https://phabricator.freedesktop.org/D1483

Signed-off-by: Daniel Stone <daniels@collabora.com>
Reviewed-by: Quentin Glidic <sardemff7+git@sardemff7.net>
dev
Daniel Stone 8 years ago
parent f33e104865
commit 893b936f9a
  1. 9
      libweston/compositor.c

@ -3932,10 +3932,9 @@ weston_compositor_wake(struct weston_compositor *compositor)
switch (old_state) { switch (old_state) {
case WESTON_COMPOSITOR_SLEEPING: case WESTON_COMPOSITOR_SLEEPING:
weston_compositor_dpms(compositor, WESTON_DPMS_ON);
/* fall through */
case WESTON_COMPOSITOR_IDLE: case WESTON_COMPOSITOR_IDLE:
case WESTON_COMPOSITOR_OFFSCREEN: case WESTON_COMPOSITOR_OFFSCREEN:
weston_compositor_dpms(compositor, WESTON_DPMS_ON);
wl_signal_emit(&compositor->wake_signal, compositor); wl_signal_emit(&compositor->wake_signal, compositor);
/* fall through */ /* fall through */
default: default:
@ -3951,10 +3950,6 @@ weston_compositor_wake(struct weston_compositor *compositor)
* This is used for example to prevent further rendering while the * This is used for example to prevent further rendering while the
* compositor is shutting down. * compositor is shutting down.
* *
* \note When offscreen state is entered, outputs will be powered
* back on if they were sleeping (in DPMS off mode), even though
* no rendering will be performed.
*
* Stops the idle timer. * Stops the idle timer.
*/ */
WL_EXPORT void WL_EXPORT void
@ -3964,8 +3959,6 @@ weston_compositor_offscreen(struct weston_compositor *compositor)
case WESTON_COMPOSITOR_OFFSCREEN: case WESTON_COMPOSITOR_OFFSCREEN:
return; return;
case WESTON_COMPOSITOR_SLEEPING: case WESTON_COMPOSITOR_SLEEPING:
weston_compositor_dpms(compositor, WESTON_DPMS_ON);
/* fall through */
default: default:
compositor->state = WESTON_COMPOSITOR_OFFSCREEN; compositor->state = WESTON_COMPOSITOR_OFFSCREEN;
wl_event_source_timer_update(compositor->idle_source, 0); wl_event_source_timer_update(compositor->idle_source, 0);

Loading…
Cancel
Save