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;
_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs