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:
authorPorteries Tristan <republicthunderbolt9@gmail.com>2015-07-24 18:05:38 +0300
committerPorteries Tristan <republicthunderbolt9@gmail.com>2015-07-24 18:08:55 +0300
commitd2fac7df32889a8a8da2f08f0b7c7af6869fb888 (patch)
treedfe1cbace06bc61f26e0ebb1c51c1f14f564ee4a
parentdc80ff9b56df7a509b62031f9e638347072ab927 (diff)
BGE: Fix T45544 Adding Armatures takes an increasing amount of logic time
Armatures were not totaly freed (only the armature object not the armature) and the original armature user count was not decrease after replication.
-rw-r--r--source/gameengine/Converter/BL_ArmatureObject.cpp6
1 files changed, 5 insertions, 1 deletions
diff --git a/source/gameengine/Converter/BL_ArmatureObject.cpp b/source/gameengine/Converter/BL_ArmatureObject.cpp
index 795a7a9ae87..fb5055c9912 100644
--- a/source/gameengine/Converter/BL_ArmatureObject.cpp
+++ b/source/gameengine/Converter/BL_ArmatureObject.cpp
@@ -230,6 +230,8 @@ BL_ArmatureObject::BL_ArmatureObject(
m_origObjArma = armature; // Keep a copy of the original armature so we can fix drivers later
m_objArma = BKE_object_copy(armature);
m_objArma->data = BKE_armature_copy((bArmature *)armature->data);
+ // During object replication ob->data is increase, we decrease it now because we get a copy.
+ id_us_min(&((bArmature *)m_origObjArma->data)->id);
m_pose = m_objArma->pose;
// need this to get iTaSC working ok in the BGE
m_pose->flag |= POSE_GAME_ENGINE;
@@ -250,8 +252,10 @@ BL_ArmatureObject::~BL_ArmatureObject()
delete channel;
}
- if (m_objArma)
+ if (m_objArma) {
+ BKE_libblock_free(G.main, m_objArma->data);
BKE_libblock_free(G.main, m_objArma);
+ }
}