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 <derek.foreman@collabora.com>
This commit is contained in:
Derek Foreman 2023-08-18 13:38:38 -05:00 committed by Marius Vlad
parent dd956e5b8b
commit 8ac621d672

View file

@ -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 =