diff options
author | Derek Foreman <derekf@osg.samsung.com> | 2015-09-11 14:28:15 -0500 |
---|---|---|
committer | Bryce Harrington <bryce@osg.samsung.com> | 2015-09-22 18:22:28 -0700 |
commit | 673bbe2e8c6953fff676e2d4e03ba5454b7a6bcd (patch) | |
tree | c48ae9653743df725ae829e09c40617b6bb17d51 | |
parent | 9d7aff0e3813341236fa953850bd02ea75604e09 (diff) | |
download | weston-673bbe2e8c6953fff676e2d4e03ba5454b7a6bcd.tar.gz |
clients: ungrab the correct input when menus close
We need to input_ungrab() on the stored input, not the one that caused
the release - otherwise bad things can happen in multi-seat environments
when a seat that didn't open the menu closes it.
To reproduce:
configure two seats
launch weston terminal
open the right click pop up
select a menu item from the other seat
The next click from the seat that opened the menu will cause a segfault.
Signed-off-by: Derek Foreman <derekf@osg.samsung.com>
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
-rw-r--r-- | clients/window.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/clients/window.c b/clients/window.c index 0e73f5bd..47a79aa6 100644 --- a/clients/window.c +++ b/clients/window.c @@ -4738,7 +4738,7 @@ menu_button_handler(struct widget *widget, /* Either relase after press-drag-release or * click-motion-click. */ menu->func(menu->user_data, input, menu->current); - input_ungrab(input); + input_ungrab(menu->input); menu_destroy(menu); } else if (state == WL_POINTER_BUTTON_STATE_RELEASED) { menu->release_count++; |