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
path: root/source
diff options
context:
space:
mode:
authorTon Roosendaal <ton@blender.org>2005-10-21 01:02:04 +0400
committerTon Roosendaal <ton@blender.org>2005-10-21 01:02:04 +0400
commit00496cd3660b4358f91fa09adc6fefa224b894c2 (patch)
tree6d86b7dde2680df624023925a2bceedd26505061 /source
parent968b3e71013e5afa1235977ba10f81e7e2a702a6 (diff)
Another memory error found, when deleting bones in editmode, it didn't
correctly free constraints. To ensure the UI not to show any deleted data, after leaving editmode it now also redraws nla, action and ipo.
Diffstat (limited to 'source')
-rw-r--r--source/blender/blenkernel/intern/armature.c4
-rw-r--r--source/blender/src/editobject.c15
2 files changed, 11 insertions, 8 deletions
diff --git a/source/blender/blenkernel/intern/armature.c b/source/blender/blenkernel/intern/armature.c
index 4d5c1c82bf2..a15cfc93092 100644
--- a/source/blender/blenkernel/intern/armature.c
+++ b/source/blender/blenkernel/intern/armature.c
@@ -958,13 +958,13 @@ void armature_rebuild_pose(Object *ob, bArmature *arm)
for(bone= arm->bonebase.first; bone; bone= bone->next) {
counter= rebuild_pose_bone(pose, bone, NULL, counter);
}
- /* sort channels on dependency order, so we can walk the channel list */
/* and a check for garbage */
for(pchan= pose->chanbase.first; pchan; pchan= next) {
next= pchan->next;
if(pchan->bone==NULL) {
- BLI_freelinkN(&pose->chanbase, pchan); // constraints?
+ free_constraints(&pchan->constraints);
+ BLI_freelinkN(&pose->chanbase, pchan);
}
}
// printf("rebuild pose %s, %d bones\n", ob->id.name, counter);
diff --git a/source/blender/src/editobject.c b/source/blender/src/editobject.c
index 1b8e49e3582..81274548d9f 100644
--- a/source/blender/src/editobject.c
+++ b/source/blender/src/editobject.c
@@ -1573,13 +1573,16 @@ void exit_editmode(int freedata) /* freedata==0 at render, 1= freedata, 2= do un
if(freedata) {
setcursor_space(SPACE_VIEW3D, CURSOR_STD);
-
- countall();
- allqueue(REDRAWVIEW3D, 1);
- allqueue(REDRAWBUTSEDIT, 0);
- allqueue(REDRAWBUTSLOGIC, 0);
- allqueue(REDRAWOOPS, 0);
}
+
+ countall();
+ allqueue(REDRAWVIEW3D, 1);
+ allqueue(REDRAWBUTSALL, 0);
+ allqueue(REDRAWACTION, 0);
+ allqueue(REDRAWNLA, 0);
+ allqueue(REDRAWIPO, 0);
+ allqueue(REDRAWOOPS, 0);
+
scrarea_queue_headredraw(curarea);
if(G.obedit==NULL && freedata==2)