From 88fa58c437ef926495bbf016d0f14139df04ddea Mon Sep 17 00:00:00 2001 From: Ton Roosendaal Date: Mon, 6 Jun 2005 09:52:44 +0000 Subject: [PATCH] Changed test for (me->flag&ME_SUBSURF) into ((me->flag&ME_SUBSURF) && me->subdiv) In build_mesh_data(). This because meshes with subdiv==0 were calling a MakeDisplist() for each redraw otherwise, disabling for example the posemode "delay deform" feature. (bug #2700) Daniel; it would help if you would add comments in the code, for example to understand the difference between; mesh_get_base_derived() mesh_get_derived() and how it relates to build_mesh_data() I realize most of the mess is in displist code... and confusing use of features while editing, posemode, & render. Nevertheless, it's not clear at first sight which parts of derivedmesh is design, and which part reflects the hacks to make it work. :) --- source/blender/blenkernel/intern/DerivedMesh.c | 5 +++-- source/blender/blenkernel/intern/displist.c | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/source/blender/blenkernel/intern/DerivedMesh.c b/source/blender/blenkernel/intern/DerivedMesh.c index fde90485536..68587cafed2 100644 --- a/source/blender/blenkernel/intern/DerivedMesh.c +++ b/source/blender/blenkernel/intern/DerivedMesh.c @@ -40,6 +40,7 @@ #include "DNA_mesh_types.h" #include "DNA_meshdata_types.h" #include "DNA_object_types.h" +#include "DNA_object_force.h" #include "BLI_blenlib.h" #include "BLI_editVert.h" @@ -846,13 +847,13 @@ static void build_mesh_data(Object *ob, int inEditMode) if(ob->parent && ob->partype==PARSKEL) makeDispList(ob); else if(ob->parent && ob->parent->type==OB_LATTICE) makeDispList(ob); else if(ob->hooks.first) makeDispList(ob); - else if(ob->softflag & 0x01) makeDispList(ob); + else if(ob->softflag & OB_SB_ENABLE) makeDispList(ob); else if(ob->effect.first) { Effect *eff= ob->effect.first; if(eff->type==EFF_WAVE) makeDispList(ob); } } - if(me->flag&ME_SUBSURF) { + if ((me->flag&ME_SUBSURF) && me->subdiv) { if(inEditMode && !G.editMesh->derived) { makeDispList(ob); } else if (!inEditMode && !me->derived) { diff --git a/source/blender/blenkernel/intern/displist.c b/source/blender/blenkernel/intern/displist.c index 9ad4fa89278..15f6fe6db90 100644 --- a/source/blender/blenkernel/intern/displist.c +++ b/source/blender/blenkernel/intern/displist.c @@ -2268,7 +2268,7 @@ void test_all_displists(void) } } - if(ob->softflag & 0x01) freedisplist_object(ob); + if(ob->softflag & OB_SB_ENABLE) freedisplist_object(ob); /* warn, ob pointer changed in case of OB_MALL */ if ELEM(ob->type, OB_CURVE, OB_SURF) {