[PATCH weston v4 05/20] desktop-shell: Pass a flag bitmask instead of bool to activate()

Jonas Ådahl jadahl at gmail.com
Thu Nov 19 20:16:04 PST 2015


On Thu, Nov 19, 2015 at 05:04:48PM -0600, Derek Foreman wrote:
> On 17/11/15 04:10 AM, Jonas Ådahl wrote:
> > Although it currently only has one available flag, but that'll change.
> > 
> > Signed-off-by: Jonas Ådahl <jadahl at gmail.com>
> > ---
> >  desktop-shell/exposay.c |  9 ++++++---
> >  desktop-shell/shell.c   | 34 ++++++++++++++++++++++------------
> >  desktop-shell/shell.h   |  2 +-
> >  src/compositor.h        |  5 +++++
> >  4 files changed, 34 insertions(+), 16 deletions(-)
> > 
> > diff --git a/desktop-shell/exposay.c b/desktop-shell/exposay.c
> > index 1e43240..99a14e0 100644
> > --- a/desktop-shell/exposay.c
> > +++ b/desktop-shell/exposay.c
> > @@ -162,7 +162,8 @@ exposay_highlight_surface(struct desktop_shell *shell,
> >  	shell->exposay.column_current = esurface->column;
> >  	shell->exposay.cur_output = esurface->eoutput;
> >  
> > -	activate(shell, view, shell->exposay.seat, false);
> > +	activate(shell, view, shell->exposay.seat,
> > +		 WESTON_ACTIVATE_FLAG_NONE);
> >  	shell->exposay.focus_current = view;
> >  }
> >  
> > @@ -559,10 +560,12 @@ exposay_transition_inactive(struct desktop_shell *shell, int switch_focus)
> >  	 * to the new. */
> >  	if (switch_focus && shell->exposay.focus_current)
> >  		activate(shell, shell->exposay.focus_current,
> > -		         shell->exposay.seat, true);
> > +		         shell->exposay.seat,
> > +			 WESTON_ACTIVATE_FLAG_CONFIGURE);
> >  	else if (shell->exposay.focus_prev)
> >  		activate(shell, shell->exposay.focus_prev,
> > -		         shell->exposay.seat, true);
> > +		         shell->exposay.seat,
> > +			 WESTON_ACTIVATE_FLAG_CONFIGURE);
> >  
> >  	wl_list_for_each(esurface, &shell->exposay.surface_list, link)
> >  		exposay_animate_out(esurface);
> > diff --git a/desktop-shell/shell.c b/desktop-shell/shell.c
> > index 1c84a88..3b34529 100644
> > --- a/desktop-shell/shell.c
> > +++ b/desktop-shell/shell.c
> > @@ -832,7 +832,8 @@ focus_state_surface_destroy(struct wl_listener *listener, void *data)
> >  	shell = state->seat->compositor->shell_interface.shell;
> >  	if (next) {
> >  		state->keyboard_focus = NULL;
> > -		activate(shell, next, state->seat, true);
> > +		activate(shell, next, state->seat,
> > +			 WESTON_ACTIVATE_FLAG_CONFIGURE);
> >  	} else {
> >  		if (shell->focus_animation_type == ANIMATION_DIM_LAYER) {
> >  			if (state->ws->focus_animation)
> > @@ -1989,10 +1990,12 @@ busy_cursor_grab_button(struct weston_pointer_grab *base,
> >  	struct weston_seat *seat = pointer->seat;
> >  
> >  	if (shsurf && button == BTN_LEFT && state) {
> > -		activate(shsurf->shell, shsurf->view, seat, true);
> > +		activate(shsurf->shell, shsurf->view, seat,
> > +			 WESTON_ACTIVATE_FLAG_CONFIGURE);
> >  		surface_move(shsurf, pointer, false);
> >  	} else if (shsurf && button == BTN_RIGHT && state) {
> > -		activate(shsurf->shell, shsurf->view, seat, true);
> > +		activate(shsurf->shell, shsurf->view, seat,
> > +			 WESTON_ACTIVATE_FLAG_CONFIGURE);
> >  		surface_rotate(shsurf, pointer);
> >  	}
> >  }
> > @@ -5035,7 +5038,7 @@ lower_fullscreen_layer(struct desktop_shell *shell,
> >  
> >  void
> >  activate(struct desktop_shell *shell, struct weston_view *view,
> > -	 struct weston_seat *seat, bool configure)
> > +	 struct weston_seat *seat, enum weston_activate_flag flags)
> >  {
> >  	struct weston_surface *es = view->surface;
> >  	struct weston_surface *main_surface;
> > @@ -5061,7 +5064,7 @@ activate(struct desktop_shell *shell, struct weston_view *view,
> >  	old_es = state->keyboard_focus;
> >  	focus_state_set_focus(state, es);
> >  
> > -	if (shsurf->state.fullscreen && configure)
> > +	if (shsurf->state.fullscreen && flags & WESTON_ACTIVATE_FLAG_CONFIGURE)
> >  		shell_configure_fullscreen(shsurf);
> >  	else
> >  		restore_output_mode(shsurf->output);
> > @@ -5098,7 +5101,8 @@ is_black_surface_view(struct weston_view *view, struct weston_view **fs_view)
> >  static void
> >  activate_binding(struct weston_seat *seat,
> >  		 struct desktop_shell *shell,
> > -		 struct weston_view *focus_view)
> > +		 struct weston_view *focus_view,
> > +		 enum weston_activate_flag flags)
> >  {
> >  	struct weston_view *main_view;
> >  	struct weston_surface *main_surface;
> > @@ -5113,7 +5117,7 @@ activate_binding(struct weston_seat *seat,
> >  	if (get_shell_surface_type(main_surface) == SHELL_SURFACE_NONE)
> >  		return;
> >  
> > -	activate(shell, focus_view, seat, true);
> > +	activate(shell, focus_view, seat, flags);
> >  }
> >  
> >  static void
> > @@ -5125,7 +5129,8 @@ click_to_activate_binding(struct weston_pointer *pointer, uint32_t time,
> >  	if (pointer->focus == NULL)
> >  		return;
> >  
> > -	activate_binding(pointer->seat, data, pointer->focus);
> > +	activate_binding(pointer->seat, data, pointer->focus,
> > +			 WESTON_ACTIVATE_FLAG_CONFIGURE);
> >  }
> >  
> >  static void
> > @@ -5137,7 +5142,8 @@ touch_to_activate_binding(struct weston_touch *touch, uint32_t time,
> >  	if (touch->focus == NULL)
> >  		return;
> >  
> > -	activate_binding(touch->seat, data, touch->focus);
> > +	activate_binding(touch->seat, data, touch->focus,
> > +			 WESTON_ACTIVATE_FLAG_CONFIGURE);
> >  }
> >  
> >  static void
> > @@ -5563,7 +5569,8 @@ map(struct desktop_shell *shell, struct shell_surface *shsurf,
> >  		if (shell->locked)
> >  			break;
> >  		wl_list_for_each(seat, &compositor->seat_list, link)
> > -			activate(shell, shsurf->view, seat, true);
> > +			activate(shell, shsurf->view, seat,
> > +				 WESTON_ACTIVATE_FLAG_CONFIGURE);
> >  		break;
> >  	case SHELL_SURFACE_POPUP:
> >  	case SHELL_SURFACE_NONE:
> > @@ -5971,9 +5978,12 @@ switcher_destroy(struct switcher *switcher)
> >  		weston_surface_damage(view->surface);
> >  	}
> >  
> > -	if (switcher->current)
> > +	if (switcher->current) {
> >  		activate(switcher->shell, switcher->current,
> > -			 keyboard->seat, true);
> > +			 keyboard->seat,
> > +			 WESTON_ACTIVATE_FLAG_CONFIGURE);
> > +	}
> > +
> >  	wl_list_remove(&switcher->listener.link);
> >  	weston_keyboard_end_grab(keyboard);
> >  	if (keyboard->input_method_resource)
> > diff --git a/desktop-shell/shell.h b/desktop-shell/shell.h
> > index 153ede5..8028bac 100644
> > --- a/desktop-shell/shell.h
> > +++ b/desktop-shell/shell.h
> > @@ -227,7 +227,7 @@ lower_fullscreen_layer(struct desktop_shell *shell,
> >  
> >  void
> >  activate(struct desktop_shell *shell, struct weston_view *view,
> > -	 struct weston_seat *seat, bool configure);
> > +	 struct weston_seat *seat, uint32_t flags);
> 
> Why uint32_t here instead of enum weston_activate_flag?

Hmm. It's actually shell.c that has the wrong type, both should be
uint32_t. enum weston_... should only be used if its used as an enum,
but it's used as a bitmask. There were a couple of more places that
happened to have 'enum weston_activate_flag' but should have had
uint32_t actually.


Jonas

> 
> Otherwise,
> Reviewed-by: Derek Foreman <derekf at osg.samsung.com>
> 
> >  
> >  void
> >  exposay_binding(struct weston_keyboard *keyboard,
> > diff --git a/src/compositor.h b/src/compositor.h
> > index 44d9f86..d1f7b04 100644
> > --- a/src/compositor.h
> > +++ b/src/compositor.h
> > @@ -1064,6 +1064,11 @@ enum weston_key_state_update {
> >  	STATE_UPDATE_NONE,
> >  };
> >  
> > +enum weston_activate_flag {
> > +	WESTON_ACTIVATE_FLAG_NONE = 0,
> > +	WESTON_ACTIVATE_FLAG_CONFIGURE = 1 << 0,
> > +};
> > +
> >  void
> >  weston_version(int *major, int *minor, int *micro);
> >  
> > 
> 


More information about the wayland-devel mailing list