xf86-video-intel: src/sna/gen3_render.c src/sna/sna_video_textured.c

Chris Wilson ickle at kemper.freedesktop.org
Thu Dec 15 10:23:16 PST 2011


 src/sna/gen3_render.c        |    2 ++
 src/sna/sna_video_textured.c |   13 ++++++++-----
 2 files changed, 10 insertions(+), 5 deletions(-)

New commits:
commit 19c184b7e4f8de747ed6fb1f6f910238193cf2a1
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Thu Dec 15 18:18:19 2011 +0000

    sna/gen3: Check for upload failure of video bo
    
    And propagate that failure back to the client.
    
    Reported-by: Paul Neumann <paul104x at yahoo.de>
    References: https://bugs.freedesktop.org/show_bug.cgi?id=43716
    Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>

diff --git a/src/sna/gen3_render.c b/src/sna/gen3_render.c
index 89cd4bd..7151e12 100644
--- a/src/sna/gen3_render.c
+++ b/src/sna/gen3_render.c
@@ -3410,6 +3410,8 @@ gen3_render_video(struct sna *sna,
 	DBG(("%s: %dx%d -> %dx%d\n", __FUNCTION__, src_w, src_h, drw_w, drw_h));
 
 	dst_bo = sna_pixmap_get_bo(pixmap);
+	if (dst_bo == NULL)
+		return FALSE;
 
 	if (pixmap->drawable.width > 2048 ||
 	    pixmap->drawable.height > 2048 ||
diff --git a/src/sna/sna_video_textured.c b/src/sna/sna_video_textured.c
index 8531fc6..ba0e146 100644
--- a/src/sna/sna_video_textured.c
+++ b/src/sna/sna_video_textured.c
@@ -227,6 +227,7 @@ sna_video_textured_put_image(ScrnInfoPtr scrn,
 	BoxRec dstBox;
 	xf86CrtcPtr crtc;
 	Bool flush = false;
+	Bool ret;
 
 	if (!sna_pixmap(pixmap))
 		return BadAlloc;
@@ -265,10 +266,12 @@ sna_video_textured_put_image(ScrnInfoPtr scrn,
 		flush = sna_wait_for_scanline(sna, pixmap, crtc,
 					      &clip->extents);
 
-	sna->render.video(sna, video, &frame, clip,
-			  src_w, src_h,
-			  drw_w, drw_h,
-			  pixmap);
+	ret = Success;
+	if (!sna->render.video(sna, video, &frame, clip,
+			       src_w, src_h,
+			       drw_w, drw_h,
+			       pixmap))
+		ret = BadAlloc;
 
 	kgem_bo_destroy(&sna->kgem, frame.bo);
 
@@ -280,7 +283,7 @@ sna_video_textured_put_image(ScrnInfoPtr scrn,
 	if (flush)
 		kgem_submit(&sna->kgem);
 
-	return Success;
+	return ret;
 }
 
 static int


More information about the xorg-commit mailing list