diff options
author | Michel Dänzer <michel.daenzer@amd.com> | 2018-10-19 18:27:37 +0200 |
---|---|---|
committer | Michel Daenzer <michel@daenzer.net> | 2018-10-24 09:53:36 +0000 |
commit | cb0de153bf0c486da7e968ab0f258c9c0c9ed34a (patch) | |
tree | 5c7084fb1b5d7d5f11d979d7e0e9f2d33abb2374 /hw | |
parent | 53d32c94f39b4a89f70fed2e102c5fb5d6cae8bc (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.c | 7 |
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 = { |