93 if (cur->seqbase.first) {
101 bool invalidate_self,
102 int invalidate_types)
106 if (invalidate_self) {
127 if (meta_seq ==
nullptr) {
142 if (seq == invalidated_seq && meta_seq !=
nullptr) {
153 int invalidate_types)
200 if (seq->scene == scene_target) {
204 if (seq->seqbase.first !=
nullptr) {
213 scene =
static_cast<Scene *
>(scene->id.next))
215 if (scene->ed !=
nullptr) {
224 if (seq->clip == clip_target) {
228 if (seq->seqbase.first !=
nullptr) {
237 scene =
static_cast<Scene *
>(scene->id.next))
239 if (scene->ed !=
nullptr) {
247 if (scene->ed ==
nullptr) {
280 const int frame_range[2])
285 !((frame_range[0] <= timeline_frame) && (frame_range[1] > timeline_frame)))
293 if (ms !=
nullptr && ms->
parseq == seq) {
327 if (seq->scene && seq->scene->ed &&
351 if (recursive_seq !=
nullptr) {
354 "Recursion detected in video sequencer. Strip %s at frame %d will not be rendered",
355 recursive_seq->
name + 2,
373 if (seq_main ==
nullptr || seq ==
nullptr) {
377 if (seq_main == seq) {
403 sanim->
anim =
nullptr;
418 GSet *used_uids = (
GSet *)user_data;
421 printf(
"Sequence %s does not have UID generated.\n", seq->
name);
426 printf(
"Sequence %s has duplicate UID generated.\n", seq->
name);
436 if (scene->ed ==
nullptr) {
471 if (seq_test == seq) {
void BKE_reportf(ReportList *reports, eReportType type, const char *format,...) ATTR_PRINTF_FORMAT(3
void * BLI_gset_lookup(const GSet *gs, const void *key) ATTR_WARN_UNUSED_RESULT
void BLI_gset_insert(GSet *gs, void *key)
GSet * BLI_gset_new(GSetHashFP hashfp, GSetCmpFP cmpfp, const char *info) ATTR_MALLOC ATTR_WARN_UNUSED_RESULT
void BLI_gset_free(GSet *gs, GSetKeyFreeFP keyfreefp)
#define LISTBASE_FOREACH(type, var, list)
void BLI_freelinkN(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
BLI_INLINE void BLI_listbase_clear(struct ListBase *lb)
MINLINE int min_ii(int a, int b)
MINLINE int max_ii(int a, int b)
bool BLI_session_uid_is_generated(const SessionUID *uid)
uint BLI_session_uid_ghash_hash(const void *uid_v)
bool BLI_session_uid_ghash_compare(const void *lhs_v, const void *rhs_v)
SessionUID BLI_session_uid_generate(void)
void DEG_id_tag_update(ID *id, unsigned int flags)
@ ID_RECALC_SEQUENCER_STRIPS
@ SEQ_CACHE_STORE_PREPROCESSED
@ SEQ_CACHE_STORE_FINAL_OUT
@ SEQ_CACHE_STORE_COMPOSITE
void IMB_free_anim(ImBufAnim *anim)
void seq_effect_speed_rebuild_map(Scene *scene, Sequence *seq)
void SEQ_cache_cleanup(Scene *scene)
void seq_cache_cleanup_sequence(Scene *scene, Sequence *seq, Sequence *seq_changed, int invalidate_types, bool force_seq_changed_range)
void SEQ_for_each_callback(ListBase *seqbase, SeqForEachFunc callback, void *user_data)
void media_presence_invalidate_strip(Scene *scene, const Sequence *seq)
void SEQ_prefetch_stop(Scene *scene)
bool sequencer_seq_generates_image(Sequence *seq)
Editing * SEQ_editing_get(const Scene *scene)
MetaStack * SEQ_meta_stack_active_get(const Editing *ed)
bool SEQ_relations_render_loop_check(Sequence *seq_main, Sequence *seq)
void SEQ_relations_invalidate_cache_raw(Scene *scene, Sequence *seq)
static void sequence_invalidate_cache(Scene *scene, Sequence *seq, bool invalidate_self, int invalidate_types)
static Sequence * sequencer_check_scene_recursion(Scene *scene, ListBase *seqbase)
static bool seq_relations_find_and_invalidate_metas(Scene *scene, Sequence *invalidated_seq, Sequence *meta_seq)
static void sequencer_all_free_anim_ibufs(const Scene *scene, ListBase *seqbase, int timeline_frame, const int frame_range[2])
bool SEQ_exists_in_seqbase(const Sequence *seq, const ListBase *seqbase)
void SEQ_relations_session_uid_generate(Sequence *sequence)
static bool seq_relations_check_depend(const Scene *scene, Sequence *seq, Sequence *cur)
void SEQ_relations_invalidate_cache_in_range(Scene *scene, Sequence *seq, Sequence *range_mask, int invalidate_types)
void SEQ_relations_sequence_free_anim(Sequence *seq)
bool SEQ_relations_check_scene_recursion(Scene *scene, ReportList *reports)
void SEQ_relations_invalidate_scene_strips(Main *bmain, Scene *scene_target)
Sequence * SEQ_find_metastrip_by_sequence(ListBase *seqbase, Sequence *meta, Sequence *seq)
void SEQ_relations_free_all_anim_ibufs(Scene *scene, int timeline_frame)
static void sequence_do_invalidate_dependent(Scene *scene, Sequence *seq, ListBase *seqbase)
static void invalidate_scene_strips(Scene *scene, Scene *scene_target, ListBase *seqbase)
void SEQ_relations_invalidate_dependent(Scene *scene, Sequence *seq)
static bool get_uids_cb(Sequence *seq, void *user_data)
void SEQ_relations_check_uids_unique_and_report(const Scene *scene)
bool SEQ_relation_is_effect_of_strip(const Sequence *effect, const Sequence *input)
void SEQ_relations_invalidate_movieclip_strips(Main *bmain, MovieClip *clip_target)
static void invalidate_movieclip_strips(Scene *scene, MovieClip *clip_target, ListBase *seqbase)
void SEQ_relations_free_imbuf(Scene *scene, ListBase *seqbase, bool for_render)
void SEQ_relations_invalidate_cache_preprocessed(Scene *scene, Sequence *seq)
void SEQ_relations_invalidate_cache_composite(Scene *scene, Sequence *seq)
int SEQ_time_left_handle_frame_get(const Scene *, const Sequence *seq)
bool SEQ_time_strip_intersects_frame(const Scene *scene, const Sequence *seq, const int timeline_frame)
int SEQ_time_right_handle_frame_get(const Scene *scene, const Sequence *seq)