From 8ac621d67252c1f93c4cc68ee3527e1f3083a50f Mon Sep 17 00:00:00 2001 From: Derek Foreman Date: Fri, 18 Aug 2023 13:38:38 -0500 Subject: [PATCH] desktop-shell: Don't try to notice disappearing outputs during fade This is a trap - it's not harmful to let the animation complete - it is harmful to call weston_shell_utils_curtain_destroy() in mid animation. It results in immediately completing the animation, which attempts to destroy the curtain a second time. Fixes a crash when (on a multi-output system) the display is disconnected during the fade out, then reconnected before the fade-in starts. Signed-off-by: Derek Foreman --- desktop-shell/shell.c | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/desktop-shell/shell.c b/desktop-shell/shell.c index ce92efbc9..a4240a709 100644 --- a/desktop-shell/shell.c +++ b/desktop-shell/shell.c @@ -3979,15 +3979,7 @@ shell_fade(struct desktop_shell *shell, enum fade_type type) weston_view_set_alpha(shell->fade.curtain->view, 1.0 - tint); } - if (shell->fade.curtain->view->output == NULL) { - /* If the black view gets a NULL output, we lost the - * last output and we'll just cancel the fade. This - * happens when you close the last window under the - * X11 or Wayland backends. */ - shell->locked = false; - weston_shell_utils_curtain_destroy(shell->fade.curtain); - shell->fade.curtain = NULL; - } else if (shell->fade.animation) { + if (shell->fade.animation) { weston_fade_update(shell->fade.animation, tint); } else { shell->fade.animation =