[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [25961] trunk/blender/source/blender/ editors/sculpt_paint/paint_image.c: fix crash for projection painting with subsurf or multires, while drawing the verts & faces were bening freed.
Campbell Barton
ideasman42 at gmail.com
Wed Jan 13 13:16:10 CET 2010
Revision: 25961
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=25961
Author: campbellbarton
Date: 2010-01-13 13:16:10 +0100 (Wed, 13 Jan 2010)
Log Message:
-----------
fix crash for projection painting with subsurf or multires, while drawing the verts & faces were bening freed.
Modified Paths:
--------------
trunk/blender/source/blender/editors/sculpt_paint/paint_image.c
Modified: trunk/blender/source/blender/editors/sculpt_paint/paint_image.c
===================================================================
--- trunk/blender/source/blender/editors/sculpt_paint/paint_image.c 2010-01-13 12:15:04 UTC (rev 25960)
+++ trunk/blender/source/blender/editors/sculpt_paint/paint_image.c 2010-01-13 12:16:10 UTC (rev 25961)
@@ -2840,7 +2840,17 @@
}
}
-
+ /* when using subsurf or multires, mface arrays are thrown away, we need to keep a copy */
+ if(ps->dm->type != DM_TYPE_CDDM) {
+ ps->dm_mvert= MEM_dupallocN(ps->dm_mvert);
+ ps->dm_mface= MEM_dupallocN(ps->dm_mface);
+ /* looks like these are ok for now.*/
+ /*
+ ps->dm_mtface= MEM_dupallocN(ps->dm_mtface);
+ ps->dm_mtface_clone= MEM_dupallocN(ps->dm_mtface_clone);
+ ps->dm_mtface_stencil= MEM_dupallocN(ps->dm_mtface_stencil);
+ */
+ }
ps->viewDir[0] = 0.0f;
ps->viewDir[1] = 0.0f;
@@ -3266,6 +3276,18 @@
BLI_memarena_free(ps->arena_mt[a]);
}
+ /* copy for subsurf/multires, so throw away */
+ if(ps->dm->type != DM_TYPE_CDDM) {
+ if(ps->dm_mvert) MEM_freeN(ps->dm_mvert);
+ if(ps->dm_mface) MEM_freeN(ps->dm_mface);
+ /* looks like these dont need copying */
+ /*
+ if(ps->dm_mtface) MEM_freeN(ps->dm_mtface);
+ if(ps->dm_mtface_clone) MEM_freeN(ps->dm_mtface_clone);
+ if(ps->dm_mtface_stencil) MEM_freeN(ps->dm_mtface_stencil);
+ */
+ }
+
if(ps->dm_release)
ps->dm->release(ps->dm);
}
More information about the Bf-blender-cvs
mailing list