[PATCH weston 1/3] shell: Fix artifacts caused by workspace change animation

Ander Conselvan de Oliveira conselvan2 at gmail.com
Wed May 7 23:25:02 PDT 2014


On 05/07/2014 04:10 PM, Jasper St. Pierre wrote:
> Hm, it seems to me that hiding a layer should cause all the regions it
> occupied to be marked as needing repaint. Fixing the scene graph is
> better than a one-off at the end of an animation.

I agree. I actually sent a patch in January to create a 
weston_layer_show() function, which would be a natural place to handle 
this, but it didn't get traction.

http://lists.freedesktop.org/archives/wayland-devel/2014-January/012969.html

Cheers,
Ander


> On Wed, May 7, 2014 at 4:57 AM, Ander Conselvan de Oliveira
> <conselvan2 at gmail.com <mailto:conselvan2 at gmail.com>> wrote:
>
>     From: Ander Conselvan de Oliveira
>     <ander.conselvan.de.oliveira at intel.com
>     <mailto:ander.conselvan.de.oliveira at intel.com>>
>
>     Views that extend past the bottom of the output are still visible after
>     the workspace animation ends but before its layer is hidden. When the
>     layer was hidden, nothing would cause those regions to be repainted,
>     leading to artifacts.
>
>     https://bugs.freedesktop.org/show_bug.cgi?id=78363
>     ---
>       desktop-shell/shell.c | 9 +++++++++
>       1 file changed, 9 insertions(+)
>
>     diff --git a/desktop-shell/shell.c b/desktop-shell/shell.c
>     index a631c62..fac3120 100644
>     --- a/desktop-shell/shell.c
>     +++ b/desktop-shell/shell.c
>     @@ -1027,8 +1027,17 @@ finish_workspace_change_animation(struct
>     desktop_shell *shell,
>                                        struct workspace *from,
>                                        struct workspace *to)
>       {
>     +       struct weston_view *view;
>     +
>              weston_compositor_schedule_repaint(shell->compositor);
>
>     +       /* Views that extend past the bottom of the output are still
>     +        * visible after the workspace animation ends but before its
>     layer
>     +        * is hidden. In that case, we need to damage below those
>     views so
>     +        * that the screen is properly repainted. */
>     +       wl_list_for_each(view, &from->layer.view_list, layer_link)
>     +               weston_view_damage_below(view);
>     +
>              wl_list_remove(&shell->workspaces.animation.link);
>              workspace_deactivate_transforms(from);
>              workspace_deactivate_transforms(to);
>     --
>     1.8.3.2
>
>     _______________________________________________
>     wayland-devel mailing list
>     wayland-devel at lists.freedesktop.org
>     <mailto:wayland-devel at lists.freedesktop.org>
>     http://lists.freedesktop.org/mailman/listinfo/wayland-devel
>
>
>
>
> --
>    Jasper



More information about the wayland-devel mailing list