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:
authorBastien Montagne <montagne29@wanadoo.fr>2018-05-11 12:21:30 +0300
committerBastien Montagne <montagne29@wanadoo.fr>2018-05-11 12:23:11 +0300
commitd5c1c0b10d5cab0639c0635c8632040dc8b97468 (patch)
tree416ab655d0df5a348057bad20ae928c54e2c6a3e /source/blender/blenkernel/intern/sequencer.c
parent13beeb58922747cc1a28bac58ceb1b44820808cd (diff)
Fix (unreported) broken freeing code for Sequencer.
Freeing sequencer would always do usercount, which is now forbidden when called from main ID freeing code. Annoying in 2.7x, much more critical issue in 2.8! Also, moved RNA sequencer API functions to proper rna_scene_api.c file.
Diffstat (limited to 'source/blender/blenkernel/intern/sequencer.c')
-rw-r--r--source/blender/blenkernel/intern/sequencer.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/source/blender/blenkernel/intern/sequencer.c b/source/blender/blenkernel/intern/sequencer.c
index 0cc151c3645..6d3c7ed1959 100644
--- a/source/blender/blenkernel/intern/sequencer.c
+++ b/source/blender/blenkernel/intern/sequencer.c
@@ -200,7 +200,7 @@ static void seq_free_strip(Strip *strip)
}
/* only give option to skip cache locally (static func) */
-static void BKE_sequence_free_ex(Scene *scene, Sequence *seq, const bool do_cache)
+static void BKE_sequence_free_ex(Scene *scene, Sequence *seq, const bool do_cache, const bool do_id_user)
{
if (seq->strip)
seq_free_strip(seq->strip);
@@ -213,7 +213,7 @@ static void BKE_sequence_free_ex(Scene *scene, Sequence *seq, const bool do_cach
sh.free(seq);
}
- if (seq->sound) {
+ if (seq->sound && do_id_user) {
id_us_min(((ID *)seq->sound));
}
@@ -237,7 +237,7 @@ static void BKE_sequence_free_ex(Scene *scene, Sequence *seq, const bool do_cach
}
if (seq->prop) {
- IDP_FreeProperty(seq->prop);
+ IDP_FreeProperty_ex(seq->prop, do_id_user);
MEM_freeN(seq->prop);
}
@@ -262,7 +262,7 @@ static void BKE_sequence_free_ex(Scene *scene, Sequence *seq, const bool do_cach
void BKE_sequence_free(Scene *scene, Sequence *seq)
{
- BKE_sequence_free_ex(scene, seq, true);
+ BKE_sequence_free_ex(scene, seq, true, true);
}
/* Function to free imbuf and anim data on changes */
@@ -292,7 +292,7 @@ static void seq_free_sequence_recurse(Scene *scene, Sequence *seq)
seq_free_sequence_recurse(scene, iseq);
}
- BKE_sequence_free_ex(scene, seq, false);
+ BKE_sequence_free_ex(scene, seq, false, true);
}
@@ -454,7 +454,7 @@ Editing *BKE_sequencer_editing_ensure(Scene *scene)
return scene->ed;
}
-void BKE_sequencer_editing_free(Scene *scene)
+void BKE_sequencer_editing_free(Scene *scene, const bool do_id_user)
{
Editing *ed = scene->ed;
Sequence *seq;
@@ -468,7 +468,7 @@ void BKE_sequencer_editing_free(Scene *scene)
SEQ_BEGIN (ed, seq)
{
/* handle cache freeing above */
- BKE_sequence_free_ex(scene, seq, false);
+ BKE_sequence_free_ex(scene, seq, false, do_id_user);
}
SEQ_END