xf86-video-intel: src/sna/sna_dri.c

Chris Wilson ickle at kemper.freedesktop.org
Tue Feb 12 11:45:22 PST 2013


 src/sna/sna_dri.c |   23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

New commits:
commit aeaed0b7810e9c794749a4f59c72790063cddc86
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Tue Feb 12 19:30:44 2013 +0000

    sna/dri: Assert that we are not passed deceased DRI2Buffers
    
    Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>

diff --git a/src/sna/sna_dri.c b/src/sna/sna_dri.c
index 732143a..9a7e246 100644
--- a/src/sna/sna_dri.c
+++ b/src/sna/sna_dri.c
@@ -911,6 +911,17 @@ sna_dri_copy_region(DrawablePtr draw,
 	void (*copy)(struct sna *, DrawablePtr, RegionPtr,
 		     struct kgem_bo *, struct kgem_bo *, bool) = sna_dri_copy;
 
+	assert(get_private(src_buffer)->refcnt);
+	assert(get_private(dst_buffer)->refcnt);
+
+	assert(get_private(src_buffer)->bo->refcnt);
+	assert(get_private(src_buffer)->bo->flush);
+
+	assert(get_private(dst_buffer)->bo->refcnt);
+	assert(get_private(dst_buffer)->bo->flush);
+
+	assert(sna_pixmap_from_drawable(draw)->flush);
+
 	if (!can_blit(sna, draw, dst_buffer, src_buffer))
 		return;
 
@@ -1098,6 +1109,7 @@ sna_dri_page_flip(struct sna *sna, struct sna_dri_frame_event *info)
 	assert(get_drawable_pixmap(info->draw)->drawable.height * bo->pitch <= kgem_bo_size(bo));
 	assert(info->scanout[0].bo);
 	assert(info->scanout[1].bo == NULL);
+	assert(bo->refcnt);
 
 	info->count = sna_page_flip(sna, bo, info, info->pipe);
 	if (!info->count)
@@ -2106,6 +2118,17 @@ sna_dri_schedule_swap(ClientPtr client, DrawablePtr draw, DRI2BufferPtr front,
 	divisor &= 0xffffffff;
 	remainder &= 0xffffffff;
 
+	assert(get_private(front)->refcnt);
+	assert(get_private(back)->refcnt);
+
+	assert(get_private(front)->bo->refcnt);
+	assert(get_private(front)->bo->flush);
+
+	assert(get_private(back)->bo->refcnt);
+	assert(get_private(back)->bo->flush);
+
+	assert(sna_pixmap_from_drawable(draw)->flush);
+
 	/* Drawable not displayed... just complete the swap */
 	pipe = sna_dri_get_pipe(draw);
 	if (pipe == -1) {


More information about the xorg-commit mailing list