diff options
-rw-r--r-- | source/blender/blenkernel/BKE_sequencer.h | 2 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/scene.c | 4 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/sequencer.c | 14 | ||||
-rw-r--r-- | source/blender/makesrna/intern/rna_scene.c | 8 | ||||
-rw-r--r-- | source/blender/makesrna/intern/rna_scene_api.c | 15 |
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"); |