From 95c059b330e705ecd0e575e98d8edf5707e84a05 Mon Sep 17 00:00:00 2001 From: Chris Wilson Date: Wed, 23 Jul 2014 11:01:07 +0100 Subject: [PATCH] sna: Reorder disabling scanout pixmap when updating slave The assertion caught that we would unregister an invalid drawable on older Xorg. Signed-off-by: Chris Wilson --- src/sna/sna_display.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/sna/sna_display.c b/src/sna/sna_display.c index 6952d556..d479c4ae 100644 --- a/src/sna/sna_display.c +++ b/src/sna/sna_display.c @@ -2178,13 +2178,17 @@ sna_crtc_set_scanout_pixmap(xf86CrtcPtr crtc, PixmapPtr pixmap) if (sna_crtc == NULL) return FALSE; + if (pixmap == sna_crtc->slave_pixmap) + return TRUE; + DBG(("%s: CRTC:%d, pipe=%d setting scanout pixmap=%ld\n", __FUNCTION__, sna_crtc->id, sna_crtc->pipe, pixmap ? pixmap->drawable.serialNumber : 0)); + /* Disable first so that we can unregister the damage tracking */ + sna_crtc_disable_shadow(to_sna(crtc->scrn), sna_crtc); + sna_crtc->slave_pixmap = pixmap; - if (pixmap == NULL) - sna_crtc_disable(crtc); return TRUE; }