[PATCH weston] weston-resizor: Don't add new frame callbacks every click
Jonas Ã…dahl
jadahl at gmail.com
Sat Feb 18 04:31:25 UTC 2017
On Wed, Feb 08, 2017 at 03:05:54PM -0600, Derek Foreman wrote:
> 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 <derekf at osg.samsung.com>
> ---
> 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;
Won't this mean that we can only initiate the resize once? The second
time we click, the locked_frame_callback_registered will still be true,
and we won't add the frame listener.
Instead what we could do is probably to check the result of
window_lock_pointer(), if it succeeded, continue with setting
resizor->locked_input. Before trying to lock, check if we already have a
locked_input, and if so, skip locking and adding the frame callback.
Would also mean we need to clean up the locked_input on button-release
and on unlocked (though seems weston-resizer crashes when unlocked by
the compositor and not by itself).
Jonas
> } 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
> wayland-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/wayland-devel
More information about the wayland-devel
mailing list