[PATCH weston v4 03/20] desktop-shell: Change switcher to track views

Peter Hutterer peter.hutterer at who-t.net
Thu Nov 19 20:47:31 PST 2015


On Tue, Nov 17, 2015 at 06:10:49PM +0800, Jonas Ådahl wrote:
> Preparation for future refactorings.
> 
> Signed-off-by: Jonas Ådahl <jadahl at gmail.com>

Acked-by: Peter Hutterer <peter.hutterer at who-t.net>

Cheers,
   Peter

> ---
>  desktop-shell/shell.c | 22 +++++++++++-----------
>  1 file changed, 11 insertions(+), 11 deletions(-)
> 
> diff --git a/desktop-shell/shell.c b/desktop-shell/shell.c
> index bdabcbf..0f473f8 100644
> --- a/desktop-shell/shell.c
> +++ b/desktop-shell/shell.c
> @@ -5881,7 +5881,7 @@ bind_desktop_shell(struct wl_client *client,
>  
>  struct switcher {
>  	struct desktop_shell *shell;
> -	struct weston_surface *current;
> +	struct weston_view *current;
>  	struct wl_listener listener;
>  	struct weston_keyboard_grab grab;
>  	struct wl_array minimized_array;
> @@ -5891,7 +5891,7 @@ static void
>  switcher_next(struct switcher *switcher)
>  {
>  	struct weston_view *view;
> -	struct weston_surface *first = NULL, *prev = NULL, *next = NULL;
> +	struct weston_view *first = NULL, *prev = NULL, *next = NULL;
>  	struct shell_surface *shsurf;
>  	struct workspace *ws = get_current_workspace(switcher->shell);
>  
> @@ -5911,10 +5911,10 @@ switcher_next(struct switcher *switcher)
>  		    shsurf->type == SHELL_SURFACE_TOPLEVEL &&
>  		    shsurf->parent == NULL) {
>  			if (first == NULL)
> -				first = view->surface;
> +				first = view;
>  			if (prev == switcher->current)
> -				next = view->surface;
> -			prev = view->surface;
> +				next = view;
> +			prev = view;
>  			view->alpha = 0.25;
>  			weston_view_geometry_dirty(view);
>  			weston_surface_damage(view->surface);
> @@ -5937,16 +5937,16 @@ switcher_next(struct switcher *switcher)
>  	wl_signal_add(&next->destroy_signal, &switcher->listener);
>  
>  	switcher->current = next;
> -	wl_list_for_each(view, &next->views, surface_link)
> +	wl_list_for_each(view, &next->surface->views, surface_link)
>  		view->alpha = 1.0;
>  
> -	shsurf = get_shell_surface(switcher->current);
> +	shsurf = get_shell_surface(switcher->current->surface);
>  	if (shsurf && shsurf->state.fullscreen)
>  		shsurf->fullscreen.black_view->alpha = 1.0;
>  }
>  
>  static void
> -switcher_handle_surface_destroy(struct wl_listener *listener, void *data)
> +switcher_handle_view_destroy(struct wl_listener *listener, void *data)
>  {
>  	struct switcher *switcher =
>  		container_of(listener, struct switcher, listener);
> @@ -5970,7 +5970,7 @@ switcher_destroy(struct switcher *switcher)
>  	}
>  
>  	if (switcher->current)
> -		activate(switcher->shell, switcher->current,
> +		activate(switcher->shell, switcher->current->surface,
>  			 keyboard->seat, true);
>  	wl_list_remove(&switcher->listener.link);
>  	weston_keyboard_end_grab(keyboard);
> @@ -5981,7 +5981,7 @@ switcher_destroy(struct switcher *switcher)
>  	struct weston_view **minimized;
>  	wl_array_for_each(minimized, &switcher->minimized_array) {
>  		/* with the exception of the current selected */
> -		if ((*minimized)->surface != switcher->current) {
> +		if ((*minimized)->surface != switcher->current->surface) {
>  			weston_layer_entry_remove(&(*minimized)->layer_link);
>  			weston_layer_entry_insert(&switcher->shell->minimized_layer.view_list, &(*minimized)->layer_link);
>  			weston_view_damage_below(*minimized);
> @@ -6039,7 +6039,7 @@ switcher_binding(struct weston_keyboard *keyboard, uint32_t time,
>  	switcher = malloc(sizeof *switcher);
>  	switcher->shell = shell;
>  	switcher->current = NULL;
> -	switcher->listener.notify = switcher_handle_surface_destroy;
> +	switcher->listener.notify = switcher_handle_view_destroy;
>  	wl_list_init(&switcher->listener.link);
>  	wl_array_init(&switcher->minimized_array);
>  
> -- 
> 2.4.3
> 
> _______________________________________________
> wayland-devel mailing list
> wayland-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/wayland-devel
> 


More information about the wayland-devel mailing list