shell: let screensaver wake up the compositor
authorPekka Paalanen <ppaalanen@gmail.com>
Thu, 1 Dec 2011 14:23:57 +0000 (16:23 +0200)
committerPekka Paalanen <ppaalanen@gmail.com>
Wed, 14 Dec 2011 10:56:15 +0000 (12:56 +0200)
Screensavers become visible the first time only after the compositor has
gone to sleep state. Therefore, to see screensaver in the start, wake up
the compositor. After a second idle timeout, the compositor will stay
sleeping.

We could also not apply this patch. It would mean the screensavers would
be visible only with the unlock dialog, and not become visible
automatically.

Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
compositor/shell.c

index 2a6d587..ec7df87 100644 (file)
@@ -859,6 +859,9 @@ lock(struct wlsc_shell *base)
        wl_list_for_each(shsurf, &shell->screensaver.surfaces, link)
                show_screensaver(shell, shsurf);
 
+       if (!wl_list_empty(&shell->screensaver.surfaces))
+               wlsc_compositor_wake(shell->compositor);
+
        /* reset pointer foci */
        wlsc_compositor_repick(shell->compositor);
 
@@ -968,8 +971,10 @@ map(struct wlsc_shell *base,
                break;
        case SHELL_SURFACE_SCREENSAVER:
                /* If locked, show it. */
-               if (shell->locked)
+               if (shell->locked) {
                        show_screensaver(shell, shsurf);
+                       wlsc_compositor_wake(compositor);
+               }
                do_configure = 0;
                break;
        default: