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.

(cherry picked from commit cb0de153bf)
This commit is contained in:
Michel Dänzer 2018-10-19 18:27:37 +02:00 committed by Olivier Fourdan
parent 971d418113
commit 64f5e6ec2d

View File

@ -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 = {