The frame callback added on button click re-adds itself when done, so adding a new one every click resulted in an ever increasing number of callbacks.
Signed-off-by: Derek Foreman <[email protected]> --- clients/resizor.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/clients/resizor.c b/clients/resizor.c index 5d342e1f..600452ad 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); -- 2.11.0 _______________________________________________ wayland-devel mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/wayland-devel
