[PATCH xserver] xwayland: restrict present cleanup to presenting and top parent window
Roman Gilg
subdiff at gmail.com
Fri Apr 20 15:07:42 UTC 2018
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.
Signed-off-by: Roman Gilg <subdiff at gmail.com>
---
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 c41a8a2..5112950 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
--
2.7.4
More information about the xorg-devel
mailing list