summaryrefslogtreecommitdiff
path: root/xserver/randr/rrcrtc.c
diff options
context:
space:
mode:
Diffstat (limited to 'xserver/randr/rrcrtc.c')
-rw-r--r--xserver/randr/rrcrtc.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/xserver/randr/rrcrtc.c b/xserver/randr/rrcrtc.c
index e82d050e3..6e2eca5ad 100644
--- a/xserver/randr/rrcrtc.c
+++ b/xserver/randr/rrcrtc.c
@@ -372,6 +372,11 @@ RRCrtcDetachScanoutPixmap(RRCrtcPtr crtc)
ret = pScrPriv->rrCrtcSetScanoutPixmap(crtc, NULL);
if (crtc->scanout_pixmap) {
master->StopPixmapTracking(mscreenpix, crtc->scanout_pixmap);
+ /*
+ * Unref the pixmap twice: once for the original reference, and once
+ * for the reference implicitly added by PixmapShareToSlave.
+ */
+ master->DestroyPixmap(crtc->scanout_pixmap->master_pixmap);
master->DestroyPixmap(crtc->scanout_pixmap->master_pixmap);
crtc->pScreen->DestroyPixmap(crtc->scanout_pixmap);
}