[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [23743] trunk/blender/source/blender/ editors/space_image/image_ops.c: Fix for crash when saving a render result image, then rendering
Brecht Van Lommel
brecht at blender.org
Fri Oct 9 17:09:22 CEST 2009
Revision: 23743
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=23743
Author: blendix
Date: 2009-10-09 17:09:21 +0200 (Fri, 09 Oct 2009)
Log Message:
-----------
Fix for crash when saving a render result image, then rendering
again. The saved image would still point to the render buffer,
which was freed again on render. This is not a real solution but
avoids the crash for now.
Modified Paths:
--------------
trunk/blender/source/blender/editors/space_image/image_ops.c
Modified: trunk/blender/source/blender/editors/space_image/image_ops.c
===================================================================
--- trunk/blender/source/blender/editors/space_image/image_ops.c 2009-10-09 14:42:36 UTC (rev 23742)
+++ trunk/blender/source/blender/editors/space_image/image_ops.c 2009-10-09 15:09:21 UTC (rev 23743)
@@ -813,12 +813,25 @@
ibuf->userflags &= ~IB_BITMAPDIRTY;
/* change type? */
+ if(ima->type==IMA_TYPE_R_RESULT) {
+ ima->type= IMA_TYPE_IMAGE;
+
+ /* workaround to ensure the render result buffer is no longer used
+ * by this image, otherwise can crash when a new render result is
+ * created. */
+ if(ibuf->rect && !(ibuf->mall & IB_rect))
+ imb_freerectImBuf(ibuf);
+ if(ibuf->rect_float && !(ibuf->mall & IB_rectfloat))
+ imb_freerectfloatImBuf(ibuf);
+ if(ibuf->zbuf && !(ibuf->mall & IB_zbuf))
+ IMB_freezbufImBuf(ibuf);
+ if(ibuf->zbuf_float && !(ibuf->mall & IB_zbuffloat))
+ IMB_freezbuffloatImBuf(ibuf);
+ }
if( ELEM(ima->source, IMA_SRC_GENERATED, IMA_SRC_VIEWER)) {
ima->source= IMA_SRC_FILE;
ima->type= IMA_TYPE_IMAGE;
}
- if(ima->type==IMA_TYPE_R_RESULT)
- ima->type= IMA_TYPE_IMAGE;
/* name image as how we saved it */
len= strlen(name);
More information about the Bf-blender-cvs
mailing list