[PATCH weston v2] shell: Don't send extra configure events on click

Derek Foreman derekf at osg.samsung.com
Thu Dec 10 11:08:01 PST 2015


The click_to_activate handler fires on every mouse click for a surface
so let's be a little quicker to early return if you're clicking on the
surface that already has activation.

This prevents (among other side effects) the sending of two xdg_configure
events for every mouse click.

This should also make having two seats with keyboards behave in the same
way as a single seat.  Previously the second seat could have a keyboard
focus on the surface and prevent some of the extra processing (including
the extra configure events) from taking place.

Signed-off-by: Derek Foreman <derekf at osg.samsung.com>
---

Difference from v1: only shortcut the click handler, don't change
the activate() function that's called on other binds (like alt-tab)


 desktop-shell/shell.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/desktop-shell/shell.c b/desktop-shell/shell.c
index 780902d..c8c441f 100644
--- a/desktop-shell/shell.c
+++ b/desktop-shell/shell.c
@@ -5101,6 +5101,7 @@ activate_binding(struct weston_seat *seat,
 		 struct desktop_shell *shell,
 		 struct weston_view *focus_view)
 {
+	struct focus_state *state;
 	struct weston_surface *focus;
 	struct weston_surface *main_surface;
 
@@ -5113,6 +5114,13 @@ activate_binding(struct weston_seat *seat,
 	if (get_shell_surface_type(main_surface) == SHELL_SURFACE_NONE)
 		return;
 
+	state = ensure_focus_state(shell, seat);
+	if (state == NULL)
+		return;
+
+	if (state->keyboard_focus == focus)
+		return;
+
 	activate(shell, focus, seat, true);
 }
 
-- 
2.6.3



More information about the wayland-devel mailing list