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>
This commit is contained in:
Derek Foreman 2015-09-11 14:28:15 -05:00 committed by Bryce Harrington
parent 9d7aff0e38
commit 673bbe2e8c

View File

@ -4738,7 +4738,7 @@ menu_button_handler(struct widget *widget,
/* Either relase after press-drag-release or /* Either relase after press-drag-release or
* click-motion-click. */ * click-motion-click. */
menu->func(menu->user_data, input, menu->current); menu->func(menu->user_data, input, menu->current);
input_ungrab(input); input_ungrab(menu->input);
menu_destroy(menu); menu_destroy(menu);
} else if (state == WL_POINTER_BUTTON_STATE_RELEASED) { } else if (state == WL_POINTER_BUTTON_STATE_RELEASED) {
menu->release_count++; menu->release_count++;