summaryrefslogtreecommitdiff
path: root/randr
diff options
context:
space:
mode:
authorMichel Dänzer <michel.daenzer@amd.com>2015-12-02 18:21:12 +0900
committerAdam Jackson <ajax@redhat.com>2015-12-02 10:56:56 -0500
commit5bccde749db93296b7784e4cdc5e54c4443656c1 (patch)
treeb3d7cbff710e473a3b3b3943829012d9088d219e /randr
parent2e3d9623ae3f562f81e513cb183ca1b1b68f279c (diff)
randr: Stop dirty tracking for shared pixmap being destroyed
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"). Reviewed-by: Adam Jackson <ajax@redhat.com> Signed-off-by: Michel Dänzer <michel.daenzer@amd.com>
Diffstat (limited to 'randr')
-rw-r--r--randr/rrcrtc.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/randr/rrcrtc.c b/randr/rrcrtc.c
index 8d9c5bb05..ec26fcda4 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);