Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source/blender/blenkernel/BKE_DerivedMesh.h1
-rw-r--r--source/blender/blenkernel/intern/DerivedMesh.c5
-rw-r--r--source/blender/src/drawobject.c10
3 files changed, 15 insertions, 1 deletions
diff --git a/source/blender/blenkernel/BKE_DerivedMesh.h b/source/blender/blenkernel/BKE_DerivedMesh.h
index bd0e2bd3a98..7a44f9de9f9 100644
--- a/source/blender/blenkernel/BKE_DerivedMesh.h
+++ b/source/blender/blenkernel/BKE_DerivedMesh.h
@@ -184,6 +184,7 @@ DerivedMesh *mesh_create_derived_render(struct Object *ob);
DerivedMesh *mesh_create_derived_no_deform(struct Object *ob, float (*vertCos)[3]);
DerivedMesh *mesh_create_derived_no_deform_render(struct Object *ob, float (*vertCos)[3]);
+DerivedMesh *editmesh_get_derived_base(void);
DerivedMesh *editmesh_get_derived_cage(int *needsFree_r);
DerivedMesh *editmesh_get_derived_cage_and_final(DerivedMesh **final_r, int *cageNeedsFree_r, int *finalNeedsFree_r);
diff --git a/source/blender/blenkernel/intern/DerivedMesh.c b/source/blender/blenkernel/intern/DerivedMesh.c
index 8bf5df95257..15f6b9fce9b 100644
--- a/source/blender/blenkernel/intern/DerivedMesh.c
+++ b/source/blender/blenkernel/intern/DerivedMesh.c
@@ -1704,3 +1704,8 @@ DerivedMesh *editmesh_get_derived_cage(int *needsFree_r)
return G.editMesh->derivedCage;
}
+
+DerivedMesh *editmesh_get_derived_base(void)
+{
+ return getEditMeshDerivedMesh(G.editMesh, NULL);
+}
diff --git a/source/blender/src/drawobject.c b/source/blender/src/drawobject.c
index 6e3401d0582..b0942f08d72 100644
--- a/source/blender/src/drawobject.c
+++ b/source/blender/src/drawobject.c
@@ -1856,7 +1856,15 @@ static void draw_mesh_object(Base *base, int dt)
if(G.obedit && ob->data==G.obedit->data) {
int cageNeedsFree, finalNeedsFree;
- DerivedMesh *finalDM, *cageDM = editmesh_get_derived_cage_and_final(&finalDM, &cageNeedsFree, &finalNeedsFree);
+ DerivedMesh *finalDM, *cageDM;
+
+ if (G.obedit!=ob) {
+ finalDM = cageDM = editmesh_get_derived_base();
+ cageNeedsFree = 0;
+ finalNeedsFree = 1;
+ } else {
+ cageDM = editmesh_get_derived_cage_and_final(&finalDM, &cageNeedsFree, &finalNeedsFree);
+ }
if(dt>OB_WIRE) init_gl_materials(ob); // no transp in editmode, the fancy draw over goes bad then
draw_em_fancy(ob, G.editMesh, cageDM, finalDM, dt);