From 673bbe2e8c6953fff676e2d4e03ba5454b7a6bcd Mon Sep 17 00:00:00 2001 From: Derek Foreman Date: Fri, 11 Sep 2015 14:28:15 -0500 Subject: [PATCH] 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 Reviewed-by: Bryce Harrington --- clients/window.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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++;