Blame SOURCES/0002-present-wnmd-Free-flip_queue-entries-in-present_wnmd.patch

88270d
From 732507ed3255dff3970c5f92bd6ea13bf877e637 Mon Sep 17 00:00:00 2001
88270d
From: =?UTF-8?q?Michel=20D=C3=A4nzer?= <mdaenzer@redhat.com>
88270d
Date: Thu, 25 Jun 2020 18:11:31 +0200
88270d
Subject: [PATCH xserver 2/4] present/wnmd: Free flip_queue entries in
88270d
 present_wnmd_clear_window_flip
88270d
MIME-Version: 1.0
88270d
Content-Type: text/plain; charset=UTF-8
88270d
Content-Transfer-Encoding: 8bit
88270d
88270d
When present_wnmd_clear_window_flip is done, present_destroy_window
88270d
frees struct present_window_priv, and the events in the flip queue
88270d
become unreachable. So if we don't free them first, they're leaked.
88270d
88270d
Also drop the call to present_wnmd_set_abort_flip, which just sets a
88270d
flag in struct present_window_priv and thus can't have any observable
88270d
effect after present_destroy_window.
88270d
88270d
Closes: https://gitlab.freedesktop.org/xorg/xserver/-/issues/1042
88270d
Reviewed-by: Dave Airlie <airlied@redhat.com>
88270d
(cherry picked from commit 1bdedc8dbb9d035b85444c2558a137470ff52113)
88270d
Signed-off-by: Michel Dänzer <mdaenzer@redhat.com>
88270d
---
88270d
 present/present_screen.c | 6 +++---
88270d
 1 file changed, 3 insertions(+), 3 deletions(-)
88270d
88270d
diff --git a/present/present_screen.c b/present/present_screen.c
88270d
index c435f55f4..bfd30b8ba 100644
88270d
--- a/present/present_screen.c
88270d
+++ b/present/present_screen.c
88270d
@@ -115,9 +115,9 @@ present_wnmd_clear_window_flip(WindowPtr window)
88270d
     present_window_priv_ptr     window_priv = present_window_priv(window);
88270d
     present_vblank_ptr          vblank, tmp;
88270d
 
88270d
-    if (window_priv->flip_pending) {
88270d
-        present_wnmd_set_abort_flip(window);
88270d
-        window_priv->flip_pending->window = NULL;
88270d
+    xorg_list_for_each_entry_safe(vblank, tmp, &window_priv->flip_queue, event_queue) {
88270d
+        present_pixmap_idle(vblank->pixmap, vblank->window, vblank->serial, vblank->idle_fence);
88270d
+        present_vblank_destroy(vblank);
88270d
     }
88270d
 
88270d
     xorg_list_for_each_entry_safe(vblank, tmp, &window_priv->idle_queue, event_queue) {
88270d
-- 
88270d
2.26.2
88270d