Blender V5.0
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
8
9#include "BLI_session_uid.h"
10
12
13#include "DNA_scene_types.h"
14#include "DNA_sequence_types.h"
15
16#include "BLI_assert.h"
17
18#include "BKE_sound.h"
19
20#include "SEQ_iterator.hh"
21
22namespace blender::deg {
23
25
26static bool strip_init_cb(Strip *strip, void *user_data)
27{
28 SequencerBackup *sb = (SequencerBackup *)user_data;
29 StripBackup strip_backup(sb->depsgraph);
30 strip_backup.init_from_strip(strip);
31 if (!strip_backup.isEmpty()) {
32 const SessionUID &session_uid = strip->runtime.session_uid;
34 sb->strips_backup.add(session_uid, strip_backup);
35 }
36 return true;
37}
38
40{
41 if (scene->ed != nullptr) {
43 }
44}
45
46static bool strip_restore_cb(Strip *strip, void *user_data)
47{
48 SequencerBackup *sb = (SequencerBackup *)user_data;
49 const SessionUID &session_uid = strip->runtime.session_uid;
51 StripBackup *strip_backup = sb->strips_backup.lookup_ptr(session_uid);
52 if (strip_backup != nullptr) {
53 strip_backup->restore_to_strip(strip);
54 }
55 return true;
56}
57
59{
60 if (scene->ed != nullptr) {
62 }
63 /* Cleanup audio while the scene is still known. */
64 for (StripBackup &strip_backup : strips_backup.values()) {
65 if (strip_backup.scene_sound != nullptr) {
66 BKE_sound_remove_scene_sound(scene, strip_backup.scene_sound);
67 }
68 }
69}
70
71} // namespace blender::deg
void BKE_sound_remove_scene_sound(struct Scene *scene, void *handle)
#define BLI_assert(a)
Definition BLI_assert.h:46
bool BLI_session_uid_is_generated(const SessionUID *uid)
Map< SessionUID, StripBackup > strips_backup
static bool strip_init_cb(Strip *strip, void *user_data)
static bool strip_restore_cb(Strip *strip, void *user_data)
void foreach_strip(ListBase *seqbase, ForEachFunc callback, void *user_data)
Definition iterator.cc:59
ListBase seqbase
struct Editing * ed
SessionUID session_uid
StripRuntime runtime