[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