From b3197f447e1310cd44552a76222c0b94c9f8bc8a Mon Sep 17 00:00:00 2001 From: Bryce Harrington Date: Tue, 30 Aug 2016 12:05:27 -0700 Subject: [PATCH] Revert "desktop-shell: Enable per-output fade animations" This reverts commit fde5adbedb2706f8e160156d9a08bc014d2e42f3. (Accidental landing) --- desktop-shell/shell.c | 138 +++++++++++++++++++----------------------- desktop-shell/shell.h | 14 ++--- 2 files changed, 68 insertions(+), 84 deletions(-) diff --git a/desktop-shell/shell.c b/desktop-shell/shell.c index 9a965608..653e85b0 100644 --- a/desktop-shell/shell.c +++ b/desktop-shell/shell.c @@ -194,9 +194,6 @@ surface_rotate(struct shell_surface *surface, struct weston_pointer *pointer); static void shell_fade_startup(struct desktop_shell *shell); -static void -shell_fade(struct desktop_shell *shell, enum fade_type type); - static struct shell_seat * get_shell_seat(struct weston_seat *seat); @@ -2787,6 +2784,9 @@ static const struct weston_desktop_api shell_desktop_api = { /* ************************ * * end of libweston-desktop * * ************************ */ +static void +shell_fade(struct desktop_shell *shell, enum fade_type type); + static void configure_static_view(struct weston_view *ev, struct weston_layer *layer) { @@ -3770,16 +3770,16 @@ unlock(struct desktop_shell *shell) } static void -shell_fade_done_for_output(struct weston_view_animation *animation, void *data) +shell_fade_done(struct weston_view_animation *animation, void *data) { - struct shell_output *shell_output = data; - struct desktop_shell *shell = shell_output->shell; + struct desktop_shell *shell = data; - shell_output->fade.animation = NULL; - switch (shell_output->fade.type) { + shell->fade.animation = NULL; + + switch (shell->fade.type) { case FADE_IN: - weston_surface_destroy(shell_output->fade.view->surface); - shell_output->fade.view = NULL; + weston_surface_destroy(shell->fade.view->surface); + shell->fade.view = NULL; break; case FADE_OUT: lock(shell); @@ -3790,7 +3790,7 @@ shell_fade_done_for_output(struct weston_view_animation *animation, void *data) } static struct weston_view * -shell_fade_create_surface_for_output(struct desktop_shell *shell, struct shell_output *shell_output) +shell_fade_create_surface(struct desktop_shell *shell) { struct weston_compositor *compositor = shell->compositor; struct weston_surface *surface; @@ -3806,8 +3806,8 @@ shell_fade_create_surface_for_output(struct desktop_shell *shell, struct shell_o return NULL; } - weston_surface_set_size(surface, shell_output->output->width, shell_output->output->height); - weston_view_set_position(view, shell_output->output->x, shell_output->output->y); + weston_surface_set_size(surface, 8192, 8192); + weston_view_set_position(view, 0, 0); weston_surface_set_color(surface, 0.0, 0.0, 0.0, 1.0); weston_layer_entry_insert(&compositor->fade_layer.view_list, &view->layer_link); @@ -3822,7 +3822,6 @@ static void shell_fade(struct desktop_shell *shell, enum fade_type type) { float tint; - struct shell_output *shell_output; switch (type) { case FADE_IN: @@ -3832,38 +3831,36 @@ shell_fade(struct desktop_shell *shell, enum fade_type type) tint = 1.0; break; default: + weston_log("shell: invalid fade type\n"); return; } - /* Create a separate fade surface for each output */ - wl_list_for_each(shell_output, &shell->output_list, link) { - shell_output->fade.type = type; + shell->fade.type = type; - if (shell_output->fade.view == NULL) { - shell_output->fade.view = shell_fade_create_surface_for_output(shell, shell_output); - if (!shell_output->fade.view) - return; + if (shell->fade.view == NULL) { + shell->fade.view = shell_fade_create_surface(shell); + if (!shell->fade.view) + return; - shell_output->fade.view->alpha = 1.0 - tint; - weston_view_update_transform(shell_output->fade.view); - } + shell->fade.view->alpha = 1.0 - tint; + weston_view_update_transform(shell->fade.view); + } - if (shell_output->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_output->fade.view->surface); - shell_output->fade.view = NULL; - } else if (shell_output->fade.animation) { - weston_fade_update(shell_output->fade.animation, tint); - } else { - shell_output->fade.animation = - weston_fade_run(shell_output->fade.view, - 1.0 - tint, tint, 300.0, - shell_fade_done_for_output, shell_output); - } + 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); + } else { + shell->fade.animation = + weston_fade_run(shell->fade.view, + 1.0 - tint, tint, 300.0, + shell_fade_done, shell); } } @@ -3871,7 +3868,6 @@ static void do_shell_fade_startup(void *data) { struct desktop_shell *shell = data; - struct shell_output *shell_output; if (shell->startup_animation_type == ANIMATION_FADE) { shell_fade(shell, FADE_IN); @@ -3879,10 +3875,8 @@ do_shell_fade_startup(void *data) weston_log("desktop shell: " "unexpected fade-in animation type %d\n", shell->startup_animation_type); - wl_list_for_each(shell_output, &shell->output_list, link) { - weston_surface_destroy(shell_output->fade.view->surface); - shell_output->fade.view = NULL; - } + weston_surface_destroy(shell->fade.view->surface); + shell->fade.view = NULL; } } @@ -3890,22 +3884,15 @@ static void shell_fade_startup(struct desktop_shell *shell) { struct wl_event_loop *loop; - struct shell_output *shell_output; - bool has_fade = false; - wl_list_for_each(shell_output, &shell->output_list, link) { - if (!shell_output->fade.startup_timer) - continue; + if (!shell->fade.startup_timer) + return; - wl_event_source_remove(shell_output->fade.startup_timer); - shell_output->fade.startup_timer = NULL; - has_fade = true; - } + wl_event_source_remove(shell->fade.startup_timer); + shell->fade.startup_timer = NULL; - if (has_fade) { - loop = wl_display_get_event_loop(shell->compositor->wl_display); - wl_event_loop_add_idle(loop, do_shell_fade_startup, shell); - } + loop = wl_display_get_event_loop(shell->compositor->wl_display); + wl_event_loop_add_idle(loop, do_shell_fade_startup, shell); } static int @@ -3926,30 +3913,27 @@ shell_fade_init(struct desktop_shell *shell) */ struct wl_event_loop *loop; - struct shell_output *shell_output; - if (shell->startup_animation_type == ANIMATION_NONE) + if (shell->fade.view != NULL) { + weston_log("%s: warning: fade surface already exists\n", + __func__); return; + } - wl_list_for_each(shell_output, &shell->output_list, link) { - if (shell_output->fade.view != NULL) { - weston_log("%s: warning: fade surface already exists\n", - __func__); - continue; - } + if (shell->startup_animation_type == ANIMATION_NONE) + return; - shell_output->fade.view = shell_fade_create_surface_for_output(shell, shell_output); - if (!shell_output->fade.view) - return; + shell->fade.view = shell_fade_create_surface(shell); + if (!shell->fade.view) + return; - weston_view_update_transform(shell_output->fade.view); - weston_surface_damage(shell_output->fade.view->surface); + weston_view_update_transform(shell->fade.view); + weston_surface_damage(shell->fade.view->surface); - loop = wl_display_get_event_loop(shell->compositor->wl_display); - shell_output->fade.startup_timer = - wl_event_loop_add_timer(loop, fade_startup_timeout, shell); - wl_event_source_timer_update(shell_output->fade.startup_timer, 15000); - } + loop = wl_display_get_event_loop(shell->compositor->wl_display); + shell->fade.startup_timer = + wl_event_loop_add_timer(loop, fade_startup_timeout, shell); + wl_event_source_timer_update(shell->fade.startup_timer, 15000); } static void @@ -3964,7 +3948,7 @@ idle_handler(struct wl_listener *listener, void *data) weston_seat_break_desktop_grabs(seat); shell_fade(shell, FADE_OUT); - /* lock() is called from shell_fade_done_for_output() */ + /* lock() is called from shell_fade_done() */ } static void diff --git a/desktop-shell/shell.h b/desktop-shell/shell.h index 063641d2..a1cea750 100644 --- a/desktop-shell/shell.h +++ b/desktop-shell/shell.h @@ -122,13 +122,6 @@ struct shell_output { struct weston_surface *background_surface; struct wl_listener background_surface_listener; - - struct { - struct weston_view *view; - struct weston_view_animation *animation; - enum fade_type type; - struct wl_event_source *startup_timer; - } fade; }; struct weston_desktop; @@ -199,6 +192,13 @@ struct desktop_shell { struct wl_list surfaces; } input_panel; + struct { + struct weston_view *view; + struct weston_view_animation *animation; + enum fade_type type; + struct wl_event_source *startup_timer; + } fade; + struct exposay exposay; bool allow_zap;