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:
-rw-r--r--source/blender/blenkernel/BKE_sequencer.h2
-rw-r--r--source/blender/blenkernel/intern/scene.c4
-rw-r--r--source/blender/blenkernel/intern/sequencer.c14
-rw-r--r--source/blender/makesrna/intern/rna_scene.c8
-rw-r--r--source/blender/makesrna/intern/rna_scene_api.c15
5 files changed, 25 insertions, 18 deletions
diff --git a/source/blender/blenkernel/BKE_sequencer.h b/source/blender/blenkernel/BKE_sequencer.h
index 3c2cebce3cf..6b0cf8f0913 100644
--- a/source/blender/blenkernel/BKE_sequencer.h
+++ b/source/blender/blenkernel/BKE_sequencer.h
@@ -207,7 +207,7 @@ void BKE_sequencer_pixel_from_sequencer_space_v4(struct Scene *scene, float pixe
* ********************************************************************** */
struct Editing *BKE_sequencer_editing_get(struct Scene *scene, bool alloc);
struct Editing *BKE_sequencer_editing_ensure(struct Scene *scene);
-void BKE_sequencer_editing_free(struct Scene *scene);
+void BKE_sequencer_editing_free(struct Scene *scene, const bool do_id_user);
void BKE_sequencer_sort(struct Scene *scene);
diff --git a/source/blender/blenkernel/intern/scene.c b/source/blender/blenkernel/intern/scene.c
index 9b3299bdbc5..230afbcaeff 100644
--- a/source/blender/blenkernel/intern/scene.c
+++ b/source/blender/blenkernel/intern/scene.c
@@ -423,7 +423,7 @@ Scene *BKE_scene_copy(Main *bmain, Scene *sce, int type)
/* Remove sequencer if not full copy */
/* XXX Why in Hell? :/ */
remove_sequencer_fcurves(sce_copy);
- BKE_sequencer_editing_free(sce_copy);
+ BKE_sequencer_editing_free(sce_copy, true);
}
/* NOTE: part of SCE_COPY_LINK_DATA and SCE_COPY_FULL operations
@@ -463,7 +463,7 @@ void BKE_scene_free(Scene *sce)
sce->basact = NULL;
BLI_freelistN(&sce->base);
- BKE_sequencer_editing_free(sce);
+ BKE_sequencer_editing_free(sce, false);
BKE_keyingsets_free(&sce->keyingsets);
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
diff --git a/source/blender/makesrna/intern/rna_scene.c b/source/blender/makesrna/intern/rna_scene.c
index 07e1c85c788..bddd78dc8e3 100644
--- a/source/blender/makesrna/intern/rna_scene.c
+++ b/source/blender/makesrna/intern/rna_scene.c
@@ -7113,14 +7113,6 @@ void RNA_def_scene(BlenderRNA *brna)
RNA_def_property_struct_type(prop, "SequenceEditor");
RNA_def_property_ui_text(prop, "Sequence Editor", "");
- func = RNA_def_function(srna, "sequence_editor_create", "BKE_sequencer_editing_ensure");
- RNA_def_function_ui_description(func, "Ensure sequence editor is valid in this scene");
- parm = RNA_def_pointer(func, "sequence_editor", "SequenceEditor", "", "New sequence editor data or NULL");
- RNA_def_function_return(func, parm);
-
- func = RNA_def_function(srna, "sequence_editor_clear", "BKE_sequencer_editing_free");
- RNA_def_function_ui_description(func, "Clear sequence editor in this scene");
-
/* Keying Sets */
prop = RNA_def_property(srna, "keying_sets", PROP_COLLECTION, PROP_NONE);
RNA_def_property_collection_sdna(prop, NULL, "keyingsets", NULL);
diff --git a/source/blender/makesrna/intern/rna_scene_api.c b/source/blender/makesrna/intern/rna_scene_api.c
index e6d030877d7..058c0a321ec 100644
--- a/source/blender/makesrna/intern/rna_scene_api.c
+++ b/source/blender/makesrna/intern/rna_scene_api.c
@@ -185,6 +185,11 @@ static void rna_Scene_ray_cast(
}
}
+static void rna_Scene_sequencer_editing_free(Scene *scene)
+{
+ BKE_sequencer_editing_free(scene, true);
+}
+
#ifdef WITH_ALEMBIC
static void rna_Scene_alembic_export(
@@ -317,6 +322,16 @@ void RNA_api_scene(StructRNA *srna)
parm = RNA_def_float_matrix(func, "matrix", 4, 4, NULL, 0.0f, 0.0f, "", "Matrix", 0.0f, 0.0f);
RNA_def_function_output(func, parm);
+ /* Sequencer. */
+ func = RNA_def_function(srna, "sequence_editor_create", "BKE_sequencer_editing_ensure");
+ RNA_def_function_ui_description(func, "Ensure sequence editor is valid in this scene");
+ parm = RNA_def_pointer(func, "sequence_editor", "SequenceEditor", "", "New sequence editor data or NULL");
+ RNA_def_function_return(func, parm);
+
+ func = RNA_def_function(srna, "sequence_editor_clear", "rna_Scene_sequencer_editing_free");
+ RNA_def_function_ui_description(func, "Clear sequence editor in this scene");
+
+
#ifdef WITH_ALEMBIC
/* XXX Deprecated, will be removed in 2.8 in favour of calling the export operator. */
func = RNA_def_function(srna, "alembic_export", "rna_Scene_alembic_export");