[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [14567] trunk/blender/source/blender/ blenkernel: == Multires ==

Nicholas Bishop nicholasbishop at gmail.com
Sun Apr 27 20:26:43 CEST 2008


Revision: 14567
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=14567
Author:   nicholasbishop
Date:     2008-04-27 20:26:43 +0200 (Sun, 27 Apr 2008)

Log Message:
-----------
== Multires ==

Fixed bug #9680, Crash on render

Caused by multires sometimes looking at editmesh data rather than mesh data during render

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/BKE_multires.h
    trunk/blender/source/blender/blenkernel/intern/multires-firstlevel.c
    trunk/blender/source/blender/blenkernel/intern/multires.c

Modified: trunk/blender/source/blender/blenkernel/BKE_multires.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_multires.h	2008-04-27 18:26:20 UTC (rev 14566)
+++ trunk/blender/source/blender/blenkernel/BKE_multires.h	2008-04-27 18:26:43 UTC (rev 14567)
@@ -61,7 +61,7 @@
 void multires_level_to_mesh(struct Object *ob, struct Mesh *me, const int render);
 void multires_update_levels(struct Mesh *me, const int render);
 void multires_update_first_level(struct Mesh *me, struct EditMesh *em);
-void multires_update_customdata(struct MultiresLevel *lvl1, struct CustomData *src,
+void multires_update_customdata(struct MultiresLevel *lvl1, struct EditMesh *em, struct CustomData *src,
 				struct CustomData *dst, const int type);
 void multires_customdata_to_mesh(struct Mesh *me, struct EditMesh *em,
 				 struct MultiresLevel *lvl, struct CustomData *src,

Modified: trunk/blender/source/blender/blenkernel/intern/multires-firstlevel.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/multires-firstlevel.c	2008-04-27 18:26:20 UTC (rev 14566)
+++ trunk/blender/source/blender/blenkernel/intern/multires-firstlevel.c	2008-04-27 18:26:43 UTC (rev 14567)
@@ -75,7 +75,7 @@
 }
 
 /* Copy vdata or fdata from Mesh or EditMesh to Multires. */
-void multires_update_customdata(MultiresLevel *lvl1, CustomData *src, CustomData *dst, const int type)
+void multires_update_customdata(MultiresLevel *lvl1, EditMesh *em, CustomData *src, CustomData *dst, const int type)
 {
 	if(src && dst && type_ok(type)) {
 		const int tot= (type == CD_MDEFORMVERT ? lvl1->totvert : lvl1->totface);
@@ -84,7 +84,7 @@
 		CustomData_free(dst, tot);
 		
 		if(CustomData_has_layer(src, type)) {
-			if(G.obedit) {
+			if(em) {
 				EditVert *eve= G.editMesh->verts.first;
 				EditFace *efa= G.editMesh->faces.first;
 				CustomData_copy(src, dst, cdmask(type), CD_CALLOC, tot);
@@ -227,9 +227,9 @@
 void multires_update_first_level(Mesh *me, EditMesh *em)
 {
 	if(me && me->mr && me->mr->current == 1) {
-		multires_update_customdata(me->mr->levels.first, em ? &em->vdata : &me->vdata,
+		multires_update_customdata(me->mr->levels.first, em, em ? &em->vdata : &me->vdata,
 		                           &me->mr->vdata, CD_MDEFORMVERT);
-		multires_update_customdata(me->mr->levels.first, em ? &em->fdata : &me->fdata,
+		multires_update_customdata(me->mr->levels.first, em, em ? &em->fdata : &me->fdata,
 		                           &me->mr->fdata, CD_MTFACE);
 		multires_update_edge_flags(me, em);
 	}

Modified: trunk/blender/source/blender/blenkernel/intern/multires.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/multires.c	2008-04-27 18:26:20 UTC (rev 14566)
+++ trunk/blender/source/blender/blenkernel/intern/multires.c	2008-04-27 18:26:43 UTC (rev 14567)
@@ -373,7 +373,7 @@
 	/* Load vertices and vdata (MDeformVerts) */
 	lvl->totvert= em ? BLI_countlist(&em->verts) : me->totvert;
 	me->mr->verts= MEM_callocN(sizeof(MVert)*lvl->totvert,"multires verts");
-	multires_update_customdata(me->mr->levels.first, em ? &em->vdata : &me->vdata,
+	multires_update_customdata(me->mr->levels.first, em, em ? &em->vdata : &me->vdata,
 	                           &me->mr->vdata, CD_MDEFORMVERT);
 	if(em) eve= em->verts.first;
 	for(i=0; i<lvl->totvert; ++i) {
@@ -384,7 +384,7 @@
 	/* Load faces and fdata (MTFaces) */
 	lvl->totface= em ? BLI_countlist(&em->faces) : me->totface;
 	lvl->faces= MEM_callocN(sizeof(MultiresFace)*lvl->totface,"multires faces");
-	multires_update_customdata(me->mr->levels.first, em ? &em->fdata : &me->fdata,
+	multires_update_customdata(me->mr->levels.first, em, em ? &em->fdata : &me->fdata,
 	                           &me->mr->fdata, CD_MTFACE);
 	if(em) efa= em->faces.first;
 	for(i=0; i<lvl->totface; ++i) {





More information about the Bf-blender-cvs mailing list