[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [22447] branches/blender2.5/blender/source /blender: 2.5/Multires:

Nicholas Bishop nicholasbishop at gmail.com
Fri Aug 14 03:48:08 CEST 2009


Revision: 22447
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=22447
Author:   nicholasbishop
Date:     2009-08-14 03:48:05 +0200 (Fri, 14 Aug 2009)

Log Message:
-----------
2.5/Multires:

Bugfixes

* Don't allow multires subdivision in editmode, this leads to corruption as noted by nudelZ. Reason is that editmode has its own copy of the MDisps customdata layer, gets written back out on exiting editmode, but the layer that was subdivided was the non-editmode original.
* Missed clearing a couple variables, caught with valgrind.

Modified Paths:
--------------
    branches/blender2.5/blender/source/blender/blenkernel/intern/multires.c
    branches/blender2.5/blender/source/blender/editors/object/object_modifier.c

Modified: branches/blender2.5/blender/source/blender/blenkernel/intern/multires.c
===================================================================
--- branches/blender2.5/blender/source/blender/blenkernel/intern/multires.c	2009-08-14 00:32:29 UTC (rev 22446)
+++ branches/blender2.5/blender/source/blender/blenkernel/intern/multires.c	2009-08-14 01:48:05 UTC (rev 22447)
@@ -220,6 +220,7 @@
 	int skip = multires_side_tot[totlvl - lvl] - 1;
 	int i, j, k;
 
+	memset(&mmd_sub, 0, sizeof(MultiresModifierData));
 	mmd_sub.lvl = mmd_sub.totlvl = totlvl;
 	mrdm = multires_dm_create_from_derived(&mmd_sub, orig, me, 0, 0);
 		
@@ -465,6 +466,7 @@
 		MultiresModifierData mmd_sub;
 
 		orig = CDDM_from_mesh(me, NULL);
+		memset(&mmd_sub, 0, sizeof(MultiresModifierData));
 		mmd_sub.lvl = mmd_sub.totlvl = mmd->lvl;
 		mrdm = multires_dm_create_from_derived(&mmd_sub, orig, me, 0, 0);
 		totsubvert = mrdm->getNumVerts(mrdm);

Modified: branches/blender2.5/blender/source/blender/editors/object/object_modifier.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/object/object_modifier.c	2009-08-14 00:32:29 UTC (rev 22446)
+++ branches/blender2.5/blender/source/blender/editors/object/object_modifier.c	2009-08-14 01:48:05 UTC (rev 22447)
@@ -640,14 +640,19 @@
 	return OPERATOR_FINISHED;
 }
 
+static int multires_subdivide_poll(bContext *C)
+{
+	return NULL != CTX_data_active_object(C) && NULL == CTX_data_edit_object(C);
+}
+
 void OBJECT_OT_multires_subdivide(wmOperatorType *ot)
 {
 	ot->name= "Multires Subdivide";
 	ot->description= "Add a new level of subdivision.";
 	ot->idname= "OBJECT_OT_multires_subdivide";
-	ot->poll= ED_operator_object_active;
 
 	ot->exec= multires_subdivide_exec;
+	ot->poll= multires_subdivide_poll;
 	
 	/* flags */
 	ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;





More information about the Bf-blender-cvs mailing list