summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDerek Foreman <derekf@osg.samsung.com>2017-02-08 15:05:54 -0600
committerDaniel Stone <daniels@collabora.com>2017-12-04 19:21:11 +0000
commitdc4f9deaee8f220ef7cb70ced4f18b39bb22bb10 (patch)
tree0008144256e336c9ac245d0af613c898a98faa19
parentbcfe397df2387e3f23d9d1a85cebc6709cba5571 (diff)
weston-resizor: Don't add new frame callbacks every click
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@osg.samsung.com> Acked-by: Daniel Stone <daniels@collabora.com>
-rw-r--r--clients/resizor.c5
1 files changed, 5 insertions, 0 deletions
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);