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:
Diffstat (limited to 'source/blender/blenkernel/intern/sequencer.c')
-rw-r--r--source/blender/blenkernel/intern/sequencer.c43
1 files changed, 22 insertions, 21 deletions
diff --git a/source/blender/blenkernel/intern/sequencer.c b/source/blender/blenkernel/intern/sequencer.c
index 29e9776407d..d6347f5e84d 100644
--- a/source/blender/blenkernel/intern/sequencer.c
+++ b/source/blender/blenkernel/intern/sequencer.c
@@ -279,7 +279,7 @@ static void BKE_sequence_free_ex(Scene *scene,
*/
if (do_cache) {
if (scene) {
- BKE_sequence_invalidate_cache(scene, seq);
+ BKE_sequence_invalidate_cache_raw(scene, seq);
}
}
@@ -4307,7 +4307,8 @@ static void sequence_do_invalidate_dependent(Scene *scene, Sequence *seq, ListBa
}
if (BKE_sequence_check_depend(seq, cur)) {
- BKE_sequencer_cache_cleanup_sequence(scene, cur);
+ BKE_sequencer_cache_cleanup_sequence(
+ scene, cur, seq, SEQ_CACHE_STORE_COMPOSITE | SEQ_CACHE_STORE_FINAL_OUT);
}
if (cur->seqbase.first) {
@@ -4319,46 +4320,46 @@ static void sequence_do_invalidate_dependent(Scene *scene, Sequence *seq, ListBa
static void sequence_invalidate_cache(Scene *scene,
Sequence *seq,
bool invalidate_self,
- bool UNUSED(invalidate_preprocess))
+ int invalidate_types)
{
Editing *ed = scene->ed;
- /* invalidate cache for current sequence */
if (invalidate_self) {
- /* Animation structure holds some buffers inside,
- * so for proper cache invalidation we need to
- * re-open the animation.
- */
BKE_sequence_free_anim(seq);
- BKE_sequencer_cache_cleanup_sequence(scene, seq);
+ BKE_sequencer_cache_cleanup_sequence(scene, seq, seq, invalidate_types);
}
- /* if invalidation is invoked from sequence free routine, effectdata would be NULL here */
if (seq->effectdata && seq->type == SEQ_TYPE_SPEED) {
BKE_sequence_effect_speed_rebuild_map(scene, seq, true);
}
- /* invalidate cache for all dependent sequences */
-
- /* NOTE: can not use SEQ_BEGIN/SEQ_END here because that macro will change sequence's depth,
- * which makes transformation routines work incorrect
- */
sequence_do_invalidate_dependent(scene, seq, &ed->seqbase);
}
-void BKE_sequence_invalidate_cache(Scene *scene, Sequence *seq)
+void BKE_sequence_invalidate_cache_raw(Scene *scene, Sequence *seq)
{
- sequence_invalidate_cache(scene, seq, true, true);
+ sequence_invalidate_cache(scene, seq, true, SEQ_CACHE_ALL_TYPES);
}
-void BKE_sequence_invalidate_dependent(Scene *scene, Sequence *seq)
+void BKE_sequence_invalidate_cache_preprocessed(Scene *scene, Sequence *seq)
{
- sequence_invalidate_cache(scene, seq, false, true);
+ sequence_invalidate_cache(scene,
+ seq,
+ true,
+ SEQ_CACHE_STORE_PREPROCESSED | SEQ_CACHE_STORE_COMPOSITE |
+ SEQ_CACHE_STORE_FINAL_OUT);
}
-void BKE_sequence_invalidate_cache_for_modifier(Scene *scene, Sequence *seq)
+void BKE_sequence_invalidate_cache_composite(Scene *scene, Sequence *seq)
+{
+ sequence_invalidate_cache(
+ scene, seq, true, SEQ_CACHE_STORE_COMPOSITE | SEQ_CACHE_STORE_FINAL_OUT);
+}
+
+void BKE_sequence_invalidate_dependent(Scene *scene, Sequence *seq)
{
- sequence_invalidate_cache(scene, seq, true, false);
+ sequence_invalidate_cache(
+ scene, seq, false, SEQ_CACHE_STORE_COMPOSITE | SEQ_CACHE_STORE_FINAL_OUT);
}
void BKE_sequencer_free_imbuf(Scene *scene, ListBase *seqbase, bool for_render)