Changeset View
Changeset View
Standalone View
Standalone View
source/blender/sequencer/intern/sequencer.c
| Show First 20 Lines • Show All 270 Lines • ▼ Show 20 Lines | void SEQ_editing_free(Scene *scene, const bool do_id_user) | ||||
| /* handle cache freeing above */ | /* handle cache freeing above */ | ||||
| LISTBASE_FOREACH_MUTABLE (Sequence *, seq, &ed->seqbase) { | LISTBASE_FOREACH_MUTABLE (Sequence *, seq, &ed->seqbase) { | ||||
| seq_free_sequence_recurse(scene, seq, do_id_user); | seq_free_sequence_recurse(scene, seq, do_id_user); | ||||
| } | } | ||||
| BLI_freelistN(&ed->metastack); | BLI_freelistN(&ed->metastack); | ||||
| SEQ_sequence_lookup_free(scene); | SEQ_sequence_lookup_free(scene); | ||||
| MEM_freeN(ed); | |||||
| if (ed->runtime.seek_failed_strips != NULL) { | |||||
| BLI_gset_free(ed->runtime.seek_failed_strips, NULL); | |||||
| BLI_gset_free(ed->runtime.seek_failed_strips_ack, NULL); | |||||
| } | |||||
| MEM_freeN(ed); | |||||
| scene->ed = NULL; | scene->ed = NULL; | ||||
| } | } | ||||
| static void seq_new_fix_links_recursive(Sequence *seq) | static void seq_new_fix_links_recursive(Sequence *seq) | ||||
| { | { | ||||
| SequenceModifierData *smd; | SequenceModifierData *smd; | ||||
| if (seq->type & SEQ_TYPE_EFFECT) { | if (seq->type & SEQ_TYPE_EFFECT) { | ||||
| ▲ Show 20 Lines • Show All 641 Lines • ▼ Show 20 Lines | void SEQ_eval_sequences(Depsgraph *depsgraph, Scene *scene, ListBase *seqbase) | ||||
| DEG_debug_print_eval(depsgraph, __func__, scene->id.name, scene); | DEG_debug_print_eval(depsgraph, __func__, scene->id.name, scene); | ||||
| BKE_sound_ensure_scene(scene); | BKE_sound_ensure_scene(scene); | ||||
| SEQ_for_each_callback(seqbase, seq_update_seq_cb, scene); | SEQ_for_each_callback(seqbase, seq_update_seq_cb, scene); | ||||
| SEQ_edit_update_muting(scene->ed); | SEQ_edit_update_muting(scene->ed); | ||||
| SEQ_sound_update_bounds_all(scene); | SEQ_sound_update_bounds_all(scene); | ||||
| } | } | ||||
| static ThreadMutex seek_error_lock = BLI_MUTEX_INITIALIZER; | |||||
| void SEQ_editing_seek_error_log_ensure(Editing *ed) | |||||
| { | |||||
| BLI_mutex_lock(&seek_error_lock); | |||||
| if (ed->runtime.seek_failed_strips == NULL) { | |||||
| ed->runtime.seek_failed_strips = BLI_gset_ptr_new(__func__); | |||||
| ed->runtime.seek_failed_strips_ack = BLI_gset_ptr_new(__func__); | |||||
| } | |||||
| BLI_mutex_unlock(&seek_error_lock); | |||||
| } | |||||
| void SEQ_editing_seek_error_log_acquire(Editing *ed, GSet **r_error_log, GSet **r_acknowledged) | |||||
| { | |||||
| BLI_mutex_lock(&seek_error_lock); | |||||
| *r_error_log = ed->runtime.seek_failed_strips; | |||||
| *r_acknowledged = ed->runtime.seek_failed_strips_ack; | |||||
| } | |||||
| void SEQ_editing_seek_error_log_release(Editing *ed) | |||||
| { | |||||
| BLI_mutex_unlock(&seek_error_lock); | |||||
| } | |||||