From 1ac10f50f483c2c365fa015c8c045c8f7344ad02 Mon Sep 17 00:00:00 2001 From: Daniel Dunbar Date: Sat, 20 Aug 2005 07:42:25 +0000 Subject: [PATCH] - bug fix, apply modifier removed modifier even on certain errors - change drawimagespace to check and update object data if it needs a recalc. this fixes errors with a recalc being flushed but not actually being done before spaceimage redraws. Updates typically actually happen in draw loop, which is not a great design... - make shared vertexcol didn't flush update --- source/blender/src/buttons_editing.c | 8 +++++--- source/blender/src/drawobject.c | 4 ++-- source/blender/src/editobject.c | 2 ++ source/blender/src/editsima.c | 11 ----------- 4 files changed, 9 insertions(+), 16 deletions(-) diff --git a/source/blender/src/buttons_editing.c b/source/blender/src/buttons_editing.c index ef35971cfa1..2ad63245b88 100644 --- a/source/blender/src/buttons_editing.c +++ b/source/blender/src/buttons_editing.c @@ -762,10 +762,12 @@ static void modifiers_applyModifier(void *obv, void *mdv) return; } - BLI_remlink(&ob->modifiers, md); - modifier_free(md); + if (converted) { + BLI_remlink(&ob->modifiers, md); + modifier_free(md); - BIF_undo_push("Apply modifier"); + BIF_undo_push("Apply modifier"); + } } static void modifiers_copyModifier(void *ob_v, void *md_v) diff --git a/source/blender/src/drawobject.c b/source/blender/src/drawobject.c index 8acaf622988..7e72f6f737f 100644 --- a/source/blender/src/drawobject.c +++ b/source/blender/src/drawobject.c @@ -3788,7 +3788,7 @@ static int bbs_mesh_verts(DerivedMesh *dm, int offset) bglEnd(); glPointSize(1.0); - return offset + G.totvert; // XXX is G variable reliable? + return offset + G.totvert; } static int bbs_mesh_wire__setDrawOptions(void *userData, int index) @@ -3807,7 +3807,7 @@ static int bbs_mesh_wire(DerivedMesh *dm, int offset) { dm->drawMappedEdges(dm, bbs_mesh_wire__setDrawOptions, (void*) offset); - return offset + G.totedge; // XXX is G variable reliable? + return offset + G.totedge; } static int bbs_mesh_solid__setSolidDrawOptions(void *userData, int index, int *drawSmooth_r) diff --git a/source/blender/src/editobject.c b/source/blender/src/editobject.c index f9ea1bd687e..74e8000053f 100644 --- a/source/blender/src/editobject.c +++ b/source/blender/src/editobject.c @@ -1951,6 +1951,8 @@ void special_editmenu(void) if(me->tface) mcol_to_tface(me, 1); BIF_undo_push("Shared VertexCol"); + + DAG_object_flush_update(G.scene, ob, OB_RECALC_DATA); } } else if(G.f & G_WEIGHTPAINT) { diff --git a/source/blender/src/editsima.c b/source/blender/src/editsima.c index 1e974bbdf84..c3a5ed0b5ad 100644 --- a/source/blender/src/editsima.c +++ b/source/blender/src/editsima.c @@ -107,17 +107,7 @@ static int compuvvert(const void *u1, const void *u2) void object_uvs_changed(Object *ob) { - /* Unfortunately we also have to force an eval - * here because otherwise the modifier UVs might - * not be updated. Goes back to sillyness that - * recalc is done as part of view3d draw loop! - * - * Technically should scan all SpaceImas here. - */ DAG_object_flush_update(G.scene, ob, OB_RECALC_DATA); - if(G.sima && (G.sima->flag & SI_DRAWSHADOW)) { - object_handle_update(ob); - } allqueue(REDRAWVIEW3D, 0); allqueue(REDRAWIMAGE, 0); @@ -127,7 +117,6 @@ void object_tface_flags_changed(Object *ob, int updateButtons) { if (G.f&G_FACESELECT) { DAG_object_flush_update(G.scene, ob, OB_RECALC_DATA); - object_handle_update(ob); } if (updateButtons) allqueue(REDRAWBUTSEDIT, 0);