summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoman Gilg <subdiff@gmail.com>2018-04-20 17:07:42 +0200
committerAdam Jackson <ajax@redhat.com>2018-04-30 15:52:16 -0400
commita843c61456b2046fb1780415f17162b503243af7 (patch)
treed392ecf0541b8842e86249fb83f05c830bd6f56c
parent975d3a509667579b81d88616b91491472059354d (diff)
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 <ajax@redhat.com> Signed-off-by: Roman Gilg <subdiff@gmail.com>
-rw-r--r--hw/xwayland/xwayland-present.c16
1 files 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