diff --git a/clients/resizor.c b/clients/resizor.c index 5d342e1fc..600452adc 100644 --- a/clients/resizor.c +++ b/clients/resizor.c @@ -53,6 +53,7 @@ struct resizor { struct spring height; struct wl_callback *frame_callback; bool pointer_locked; + bool locked_frame_callback_registered; struct input *locked_input; float pointer_x; float pointer_y; @@ -330,11 +331,15 @@ button_handler(struct widget *widget, handle_pointer_unlocked); resizor->locked_input = input; + if (resizor->locked_frame_callback_registered) + return; + surface = window_get_wl_surface(resizor->window); callback = wl_surface_frame(surface); wl_callback_add_listener(callback, &locked_pointer_frame_listener, resizor); + resizor->locked_frame_callback_registered = true; } else if (button == BTN_LEFT && state == WL_POINTER_BUTTON_STATE_RELEASED) { input_set_pointer_image(input, CURSOR_LEFT_PTR);