Blender V4.3
deg_eval_runtime_backup_sequencer.cc
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2019 Blender Authors
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
10
11#include "DNA_scene_types.h"
12#include "DNA_sequence_types.h"
13
14#include "BLI_assert.h"
15
16#include "BKE_sound.h"
17
18#include "SEQ_iterator.hh"
19
20namespace blender::deg {
21
23
24static bool seq_init_cb(Sequence *seq, void *user_data)
25{
26 SequencerBackup *sb = (SequencerBackup *)user_data;
27 SequenceBackup sequence_backup(sb->depsgraph);
28 sequence_backup.init_from_sequence(seq);
29 if (!sequence_backup.isEmpty()) {
30 const SessionUID &session_uid = seq->runtime.session_uid;
32 sb->sequences_backup.add(session_uid, sequence_backup);
33 }
34 return true;
35}
36
38{
39 if (scene->ed != nullptr) {
40 SEQ_for_each_callback(&scene->ed->seqbase, seq_init_cb, this);
41 }
42}
43
44static bool seq_restore_cb(Sequence *seq, void *user_data)
45{
46 SequencerBackup *sb = (SequencerBackup *)user_data;
47 const SessionUID &session_uid = seq->runtime.session_uid;
49 SequenceBackup *sequence_backup = sb->sequences_backup.lookup_ptr(session_uid);
50 if (sequence_backup != nullptr) {
51 sequence_backup->restore_to_sequence(seq);
52 }
53 return true;
54}
55
57{
58 if (scene->ed != nullptr) {
59 SEQ_for_each_callback(&scene->ed->seqbase, seq_restore_cb, this);
60 }
61 /* Cleanup audio while the scene is still known. */
62 for (SequenceBackup &sequence_backup : sequences_backup.values()) {
63 if (sequence_backup.scene_sound != nullptr) {
64 BKE_sound_remove_scene_sound(scene, sequence_backup.scene_sound);
65 }
66 }
67}
68
69} // namespace blender::deg
void BKE_sound_remove_scene_sound(struct Scene *scene, void *handle)
#define BLI_assert(a)
Definition BLI_assert.h:50
bool BLI_session_uid_is_generated(const SessionUID *uid)
Definition session_uid.c:38
Map< SessionUID, SequenceBackup > sequences_backup
const Depsgraph * depsgraph
void SEQ_for_each_callback(ListBase *seqbase, SeqForEachFunc callback, void *user_data)
Definition iterator.cc:43
static bool seq_init_cb(Sequence *seq, void *user_data)
static bool seq_restore_cb(Sequence *seq, void *user_data)
SequenceRuntime runtime