From: Michel Dänzer <[email protected]>

Otherwise, we leave a dangling reference to the destroyed pixmap in the
master screen's pixmap_dirty_list.

Fixes regression from commit cf5d6414 ("randr: Factor out shared pixmap
destruction").

Signed-off-by: Michel Dänzer <[email protected]>
---
 randr/rrcrtc.c | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/randr/rrcrtc.c b/randr/rrcrtc.c
index 8d9c5bb..ec26fcd 100644
--- a/randr/rrcrtc.c
+++ b/randr/rrcrtc.c
@@ -363,13 +363,18 @@ RRComputeContiguity(ScreenPtr pScreen)
 
 static void
 rrDestroySharedPixmap(RRCrtcPtr crtc, PixmapPtr pPixmap) {
-    if (crtc->pScreen->current_master && pPixmap->master_pixmap) {
+    ScreenPtr master = crtc->pScreen->current_master;
+
+    if (master && pPixmap->master_pixmap) {
+        PixmapPtr mscreenpix = master->GetScreenPixmap(master);
+
+        master->StopPixmapTracking(mscreenpix, pPixmap);
         /*
          * Unref the pixmap twice: once for the original reference, and once
          * for the reference implicitly added by PixmapShareToSlave.
          */
-        crtc->pScreen->current_master->DestroyPixmap(pPixmap->master_pixmap);
-        crtc->pScreen->current_master->DestroyPixmap(pPixmap->master_pixmap);
+        master->DestroyPixmap(pPixmap->master_pixmap);
+        master->DestroyPixmap(pPixmap->master_pixmap);
     }
 
     crtc->pScreen->DestroyPixmap(pPixmap);
-- 
2.6.2

_______________________________________________
[email protected]: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel

Reply via email to