From 9c6217e6dc16684953f309e8b64bafe727717b73 Mon Sep 17 00:00:00 2001 From: Ander Conselvan de Oliveira Date: Wed, 7 May 2014 11:57:26 +0300 Subject: [PATCH] shell: Fix artifacts caused by workspace change animation 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 a631c6299..fac312094 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);