summaryrefslogtreecommitdiff
path: root/hw
diff options
context:
space:
mode:
authorMichel Dänzer <michel.daenzer@amd.com>2018-10-19 18:27:37 +0200
committerMichel Daenzer <michel@daenzer.net>2018-10-24 09:53:36 +0000
commitcb0de153bf0c486da7e968ab0f258c9c0c9ed34a (patch)
tree5c7084fb1b5d7d5f11d979d7e0e9f2d33abb2374 /hw
parent53d32c94f39b4a89f70fed2e102c5fb5d6cae8bc (diff)
xwayland: Plug leaks in xwl_present_sync_callback
xwl_present_window->sync_callback was leaked. The event memory was leaked if the corresponding buffer had already been released.
Diffstat (limited to 'hw')
-rw-r--r--hw/xwayland/xwayland-present.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/hw/xwayland/xwayland-present.c b/hw/xwayland/xwayland-present.c
index 98692b3ca..a1470751a 100644
--- a/hw/xwayland/xwayland-present.c
+++ b/hw/xwayland/xwayland-present.c
@@ -274,6 +274,9 @@ xwl_present_sync_callback(void *data,
struct xwl_present_event *event = data;
struct xwl_present_window *xwl_present_window = event->xwl_present_window;
+ wl_callback_destroy(xwl_present_window->sync_callback);
+ xwl_present_window->sync_callback = NULL;
+
event->pending = FALSE;
if (event->abort) {
@@ -289,12 +292,14 @@ xwl_present_sync_callback(void *data,
xwl_present_window->ust,
xwl_present_window->msc);
- if (event->buffer_released)
+ if (event->buffer_released) {
/* If the buffer was already released, send the event now again */
present_wnmd_event_notify(xwl_present_window->window,
event->event_id,
xwl_present_window->ust,
xwl_present_window->msc);
+ xwl_present_free_event(event);
+ }
}
static const struct wl_callback_listener xwl_present_sync_listener = {