Also updates the drm, fbdev and rpi backend to use
weston_compositor_sleep() and not set the state manually.

Fixes https://bugs.freedesktop.org/show_bug.cgi?id=61910 (rpi backend
untested).
---
 src/compositor-drm.c   | 2 +-
 src/compositor-fbdev.c | 2 +-
 src/compositor-rpi.c   | 4 ++--
 src/compositor.c       | 1 +
 4 files changed, 5 insertions(+), 4 deletions(-)

diff --git a/src/compositor-drm.c b/src/compositor-drm.c
index d933c92..7b89940 100644
--- a/src/compositor-drm.c
+++ b/src/compositor-drm.c
@@ -2027,7 +2027,7 @@ vt_func(struct weston_compositor *compositor, int event)
 
                compositor->focus = 0;
                ec->prev_state = compositor->state;
-               compositor->state = WESTON_COMPOSITOR_SLEEPING;
+               weston_compositor_sleep(compositor);
 
                /* If we have a repaint scheduled (either from a
                 * pending pageflip or the idle handler), make sure we
diff --git a/src/compositor-fbdev.c b/src/compositor-fbdev.c
index 070d187..c53d993 100644
--- a/src/compositor-fbdev.c
+++ b/src/compositor-fbdev.c
@@ -791,7 +791,7 @@ vt_func(struct weston_compositor *base, int event)
 
                compositor->base.focus = 0;
                compositor->prev_state = compositor->base.state;
-               compositor->base.state = WESTON_COMPOSITOR_SLEEPING;
+               weston_compositor_sleep(&compositor->base);
 
                /* If we have a repaint scheduled (from the idle handler), make
                 * sure we cancel that so we don't try to pageflip when we're
diff --git a/src/compositor-rpi.c b/src/compositor-rpi.c
index d3767b9..4b20b8b 100644
--- a/src/compositor-rpi.c
+++ b/src/compositor-rpi.c
@@ -577,7 +577,7 @@ rpi_element_dmx_move(struct rpi_element *element,
                &dst_rect,
                &src_rect,
                DISPMANX_NO_HANDLE,
-               DISPMANX_NO_ROTATE);
+               VC_IMAGE_ROT0);
        DBG("element %p move\n", element);
 }
 
@@ -1381,7 +1381,7 @@ vt_func(struct weston_compositor *base, int event)
 
                compositor->base.focus = 0;
                compositor->prev_state = compositor->base.state;
-               compositor->base.state = WESTON_COMPOSITOR_SLEEPING;
+               weston_compositor_sleep(&compositor->base);
 
                /* If we have a repaint scheduled (either from a
                 * pending pageflip or the idle handler), make sure we
diff --git a/src/compositor.c b/src/compositor.c
index 7df9658..e32de07 100644
--- a/src/compositor.c
+++ b/src/compositor.c
@@ -1624,6 +1624,7 @@ weston_compositor_sleep(struct weston_compositor 
*compositor)
        if (compositor->state == WESTON_COMPOSITOR_SLEEPING)
                return;
 
+       wl_event_source_timer_update(compositor->idle_source, 0);
        compositor->state = WESTON_COMPOSITOR_SLEEPING;
        weston_compositor_dpms(compositor, WESTON_DPMS_OFF);
 }
-- 
1.8.1.5

_______________________________________________
wayland-devel mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/wayland-devel

Reply via email to