[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [38109] trunk/blender/source/blender/ editors/render/render_opengl.c: fix [#27862] OpenGL render animation don' t respect .png RGB option.

Campbell Barton ideasman42 at gmail.com
Tue Jul 5 09:46:26 CEST 2011


Revision: 38109
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=38109
Author:   campbellbarton
Date:     2011-07-05 07:46:25 +0000 (Tue, 05 Jul 2011)
Log Message:
-----------
fix [#27862] OpenGL render animation don't respect .png RGB option.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/render/render_opengl.c

Modified: trunk/blender/source/blender/editors/render/render_opengl.c
===================================================================
--- trunk/blender/source/blender/editors/render/render_opengl.c	2011-07-05 05:22:02 UTC (rev 38108)
+++ trunk/blender/source/blender/editors/render/render_opengl.c	2011-07-05 07:46:25 UTC (rev 38109)
@@ -438,8 +438,6 @@
 	ibuf= BKE_image_acquire_ibuf(oglrender->ima, &oglrender->iuser, &lock);
 
 	if(ibuf) {
-		short ibuf_free= FALSE;
-
 		/* color -> greyscale */
 		/* editing directly would alter the render view */
 		if(scene->r.planes == 8) {
@@ -447,9 +445,16 @@
 			IMB_color_to_bw(ibuf_bw);
 			// IMB_freeImBuf(ibuf); /* owned by the image */
 			ibuf= ibuf_bw;
-
-			ibuf_free= TRUE;
 		}
+		else {
+			/* this is lightweight & doesnt re-alloc the buffers, only do this
+			 * to save the correct bit depth since the image is always RGBA */
+			ImBuf *ibuf_cpy= IMB_allocImBuf(ibuf->x, ibuf->y, scene->r.planes, 0);
+			ibuf_cpy->rect= ibuf->rect;
+			ibuf_cpy->rect_float= ibuf->rect_float;
+			ibuf_cpy->zbuf_float= ibuf->zbuf_float;
+			ibuf= ibuf_cpy;
+		}
 
 		if(BKE_imtype_is_movie(scene->r.imtype)) {
 			ok= oglrender->mh->append_movie(&scene->r, CFRA, (int*)ibuf->rect, oglrender->sizex, oglrender->sizey, oglrender->reports);
@@ -472,9 +477,8 @@
 			}
 		}
 
-		if(ibuf_free) {
-			IMB_freeImBuf(ibuf);
-		}
+		/* imbuf knows which rects are not part of ibuf */
+		IMB_freeImBuf(ibuf);
 	}
 
 	BKE_image_release_ibuf(oglrender->ima, lock);




More information about the Bf-blender-cvs mailing list