From a843c61456b2046fb1780415f17162b503243af7 Mon Sep 17 00:00:00 2001 From: Roman Gilg Date: Fri, 20 Apr 2018 17:07:42 +0200 Subject: [PATCH] xwayland: restrict present cleanup to presenting and top parent window Clean up only if the request points to the presenting window or its top parent window. Since in this case all events are removed unconditionally, always stop the timer. Reviewed-by: Adam Jackson Signed-off-by: Roman Gilg --- hw/xwayland/xwayland-present.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/hw/xwayland/xwayland-present.c b/hw/xwayland/xwayland-present.c index 07fdc7c18..66bfaaed0 100644 --- a/hw/xwayland/xwayland-present.c +++ b/hw/xwayland/xwayland-present.c @@ -77,13 +77,14 @@ xwl_present_cleanup(struct xwl_window *xwl_window, WindowPtr window) { struct xwl_present_event *event, *tmp; - if (xwl_window->present_window == window || xwl_window->window == window) { - if (xwl_window->present_frame_callback) { - wl_callback_destroy(xwl_window->present_frame_callback); - xwl_window->present_frame_callback = NULL; - } - xwl_window->present_window = NULL; + if (xwl_window->present_window != window && xwl_window->window != window) + return; + + if (xwl_window->present_frame_callback) { + wl_callback_destroy(xwl_window->present_frame_callback); + xwl_window->present_frame_callback = NULL; } + xwl_window->present_window = NULL; /* Clear remaining events */ xorg_list_for_each_entry_safe(event, tmp, &xwl_window->present_event_list, list) { @@ -98,8 +99,7 @@ xwl_present_cleanup(struct xwl_window *xwl_window, WindowPtr window) } /* Clear timer */ - if (!xwl_present_has_events(xwl_window)) - xwl_present_free_timer(xwl_window); + xwl_present_free_timer(xwl_window); } static void