Changeset View
Changeset View
Standalone View
Standalone View
source/blender/blenkernel/intern/sequencer.c
| Show First 20 Lines • Show All 4,162 Lines • ▼ Show 20 Lines | static void sequence_do_invalidate_dependent(Scene *scene, Sequence *seq, ListBase *seqbase) | ||||
| for (cur = seqbase->first; cur; cur = cur->next) { | for (cur = seqbase->first; cur; cur = cur->next) { | ||||
| if (cur == seq) { | if (cur == seq) { | ||||
| continue; | continue; | ||||
| } | } | ||||
| if (BKE_sequence_check_depend(seq, cur)) { | if (BKE_sequence_check_depend(seq, cur)) { | ||||
| /* Effect must be invalidated completely if they depend on invalidated seq. */ | /* Effect must be invalidated completely if they depend on invalidated seq. */ | ||||
| if ((cur->type & SEQ_TYPE_EFFECT) != 0) { | if ((cur->type & SEQ_TYPE_EFFECT) != 0) { | ||||
| BKE_sequencer_cache_cleanup_sequence( | BKE_sequencer_cache_cleanup_sequence(scene, cur, seq, SEQ_CACHE_ALL_TYPES, false); | ||||
| scene, cur, seq, SEQ_CACHE_ALL_TYPES); | |||||
| } | } | ||||
| else { | else { | ||||
| /* In case of alpha over for example only invalidate composite image */ | /* In case of alpha over for example only invalidate composite image */ | ||||
| BKE_sequencer_cache_cleanup_sequence( | BKE_sequencer_cache_cleanup_sequence( | ||||
| scene, cur, seq, SEQ_CACHE_STORE_COMPOSITE | SEQ_CACHE_STORE_FINAL_OUT); | scene, cur, seq, SEQ_CACHE_STORE_COMPOSITE | SEQ_CACHE_STORE_FINAL_OUT, false); | ||||
| } | } | ||||
| } | } | ||||
| if (cur->seqbase.first) { | if (cur->seqbase.first) { | ||||
| sequence_do_invalidate_dependent(scene, seq, &cur->seqbase); | sequence_do_invalidate_dependent(scene, seq, &cur->seqbase); | ||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| static void sequence_invalidate_cache(Scene *scene, | static void sequence_invalidate_cache(Scene *scene, | ||||
| Sequence *seq, | Sequence *seq, | ||||
| bool invalidate_self, | bool invalidate_self, | ||||
| int invalidate_types) | int invalidate_types) | ||||
| { | { | ||||
| Editing *ed = scene->ed; | Editing *ed = scene->ed; | ||||
| if (invalidate_self) { | if (invalidate_self) { | ||||
| BKE_sequence_free_anim(seq); | BKE_sequence_free_anim(seq); | ||||
| BKE_sequencer_cache_cleanup_sequence(scene, seq, seq, invalidate_types); | BKE_sequencer_cache_cleanup_sequence(scene, seq, seq, invalidate_types, false); | ||||
| } | } | ||||
| if (seq->effectdata && seq->type == SEQ_TYPE_SPEED) { | if (seq->effectdata && seq->type == SEQ_TYPE_SPEED) { | ||||
| BKE_sequence_effect_speed_rebuild_map(scene, seq, true); | BKE_sequence_effect_speed_rebuild_map(scene, seq, true); | ||||
| } | } | ||||
| sequence_do_invalidate_dependent(scene, seq, &ed->seqbase); | sequence_do_invalidate_dependent(scene, seq, &ed->seqbase); | ||||
| DEG_id_tag_update(&scene->id, ID_RECALC_SEQUENCER_STRIPS); | DEG_id_tag_update(&scene->id, ID_RECALC_SEQUENCER_STRIPS); | ||||
| BKE_sequencer_prefetch_stop(scene); | BKE_sequencer_prefetch_stop(scene); | ||||
| } | } | ||||
| void BKE_sequence_invalidate_cache_in_range(Scene *scene, | |||||
| Sequence *seq, | |||||
| Sequence *range_mask, | |||||
| int invalidate_types) | |||||
| { | |||||
| BKE_sequencer_cache_cleanup_sequence(scene, seq, range_mask, invalidate_types, true); | |||||
| } | |||||
| void BKE_sequence_invalidate_cache_raw(Scene *scene, Sequence *seq) | void BKE_sequence_invalidate_cache_raw(Scene *scene, Sequence *seq) | ||||
| { | { | ||||
| sequence_invalidate_cache(scene, seq, true, SEQ_CACHE_ALL_TYPES); | sequence_invalidate_cache(scene, seq, true, SEQ_CACHE_ALL_TYPES); | ||||
| } | } | ||||
| void BKE_sequence_invalidate_cache_preprocessed(Scene *scene, Sequence *seq) | void BKE_sequence_invalidate_cache_preprocessed(Scene *scene, Sequence *seq) | ||||
| { | { | ||||
| sequence_invalidate_cache(scene, | sequence_invalidate_cache(scene, | ||||
| ▲ Show 20 Lines • Show All 1,744 Lines • Show Last 20 Lines | |||||