xf86-video-intel: src/sna/sna_accel.c src/sna/sna.h

Chris Wilson ickle at kemper.freedesktop.org
Sun Jul 26 10:22:54 PDT 2015


 src/sna/sna.h       |   15 +++++++++++++--
 src/sna/sna_accel.c |    4 ++++
 2 files changed, 17 insertions(+), 2 deletions(-)

New commits:
commit 50f3e9c41c6de98f917a9ddc78aabdda421f920a
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Sun Jul 26 18:22:16 2015 +0100

    sna: Add a small pixmap sanity check
    
    Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>

diff --git a/src/sna/sna.h b/src/sna/sna.h
index d8dc412..5b3569e 100644
--- a/src/sna/sna.h
+++ b/src/sna/sna.h
@@ -181,18 +181,29 @@ static inline WindowPtr get_root_window(ScreenPtr screen)
 #endif
 }
 
+#if !NDEBUG
+static PixmapPtr check_pixmap(PixmapPtr pixmap)
+{
+	assert(pixmap->refcnt >= 1);
+	assert(pixmap->devKind != 0xdeadbeef);
+	return pixmap;
+}
+#else
+#define check_pixmap(p) p
+#endif
+
 static inline PixmapPtr get_window_pixmap(WindowPtr window)
 {
 	assert(window);
 	assert(window->drawable.type != DRAWABLE_PIXMAP);
-	return fbGetWindowPixmap(window);
+	return check_pixmap(fbGetWindowPixmap(window));
 }
 
 static inline PixmapPtr get_drawable_pixmap(DrawablePtr drawable)
 {
 	assert(drawable);
 	if (drawable->type == DRAWABLE_PIXMAP)
-		return (PixmapPtr)drawable;
+		return check_pixmap((PixmapPtr)drawable);
 	else
 		return get_window_pixmap((WindowPtr)drawable);
 }
diff --git a/src/sna/sna_accel.c b/src/sna/sna_accel.c
index 703c3cb..3150dd5 100644
--- a/src/sna/sna_accel.c
+++ b/src/sna/sna_accel.c
@@ -882,6 +882,7 @@ __pop_freed_pixmap(struct sna *sna)
 	     __FUNCTION__, pixmap->drawable.serialNumber));
 
 	assert(pixmap->refcnt == 0);
+	assert(pixmap->devKind = 0xdeadbeef);
 	assert(sna_pixmap(pixmap));
 	assert(sna_pixmap(pixmap)->header);
 
@@ -1430,6 +1431,9 @@ static void __sna_free_pixmap(struct sna *sna,
 	if (priv->flush)
 		sna_accel_watch_flush(sna, -1);
 
+#if !NDEBUG
+	pixmap->devKind = 0xdeadbeef;
+#endif
 	if (priv->header) {
 		assert(pixmap->drawable.pScreen == to_screen_from_sna(sna));
 		assert(!priv->shm);


More information about the xorg-commit mailing list