shell: Don't start a fade animation if we don't have an output

When the last window of the X11 compositor is closed during a fade or
while locked, we'll try to start a fade back to the lock screen.  However,
if we closed the last window, there are no outputs left and the animation
will try to run with surface->output == NULL.

https://bugs.freedesktop.org/show_bug.cgi?id=73665
dev
Kristian Høgsberg 11 years ago
parent 8fe412d35b
commit 87d3b61355
  1. 13
      desktop-shell/shell.c

@ -4412,13 +4412,22 @@ shell_fade(struct desktop_shell *shell, enum fade_type type)
weston_view_update_transform(shell->fade.view); weston_view_update_transform(shell->fade.view);
} }
if (shell->fade.animation) if (shell->fade.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_surface_destroy(shell->fade.view->surface);
shell->fade.view = NULL;
} else if (shell->fade.animation) {
weston_fade_update(shell->fade.animation, tint); weston_fade_update(shell->fade.animation, tint);
else } else {
shell->fade.animation = shell->fade.animation =
weston_fade_run(shell->fade.view, weston_fade_run(shell->fade.view,
1.0 - tint, tint, 300.0, 1.0 - tint, tint, 300.0,
shell_fade_done, shell); shell_fade_done, shell);
}
} }
static void static void

Loading…
Cancel
Save