Fixes leak in Animation Track editor

This commit is contained in:
Haoyu Qiu 2020-01-24 11:16:40 +08:00
parent 8a7a216be5
commit 0ca102d568

View file

@ -4839,19 +4839,22 @@ struct _AnimMoveRestore {
void AnimationTrackEditor::_clear_key_edit() {
if (key_edit) {
//if key edit is the object being inspected, remove it first
if (EditorNode::get_singleton()->get_inspector()->get_edited_object() == key_edit ||
EditorNode::get_singleton()->get_inspector()->get_edited_object() == multi_key_edit) {
if (EditorNode::get_singleton()->get_inspector()->get_edited_object() == key_edit) {
EditorNode::get_singleton()->push_item(NULL);
}
//then actually delete it
if (key_edit) {
memdelete(key_edit);
key_edit = NULL;
} else if (multi_key_edit) {
memdelete(multi_key_edit);
multi_key_edit = NULL;
memdelete(key_edit);
key_edit = NULL;
}
if (multi_key_edit) {
if (EditorNode::get_singleton()->get_inspector()->get_edited_object() == multi_key_edit) {
EditorNode::get_singleton()->push_item(NULL);
}
memdelete(multi_key_edit);
multi_key_edit = NULL;
}
}
@ -4907,7 +4910,7 @@ void AnimationTrackEditor::_update_key_edit() {
if (!key_ofs_map.has(track)) {
key_ofs_map[track] = List<float>();
base_map[track] = *memnew(NodePath);
base_map[track] = NodePath();
}
key_ofs_map[track].push_back(animation->track_get_key_time(track, E->key().key));
@ -5974,6 +5977,7 @@ AnimationTrackEditor::AnimationTrackEditor() {
keying = false;
moving_selection = 0;
key_edit = NULL;
multi_key_edit = NULL;
box_selection = memnew(Control);
add_child(box_selection);
@ -6085,4 +6089,7 @@ AnimationTrackEditor::~AnimationTrackEditor() {
if (key_edit) {
memdelete(key_edit);
}
if (multi_key_edit) {
memdelete(multi_key_edit);
}
}