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