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:36:48 +0300
commit20b6eabd4282890f2d990fcb31555ff34699d861 (patch)
tree0aec2eadb0cae3b299c373d1de6b1eac3e65a31e /source/blender/blenkernel/intern/sequencer.c
parent8b41999ea0ff7dd873128bcdb2ff422bd46edd2d (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 a282f535df6..fb619f6c567 100644
--- a/source/blender/blenkernel/intern/sequencer.c
+++ b/source/blender/blenkernel/intern/sequencer.c
@@ -205,7 +205,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);
@@ -218,7 +218,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));
}
@@ -242,7 +242,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);
}
@@ -267,7 +267,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 */
@@ -297,7 +297,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);
}
@@ -459,7 +459,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;
@@ -473,7 +473,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