Blender V5.0
deg_eval_runtime_backup_sequence.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
10
11#include "DNA_sequence_types.h"
12
13#include "BLI_listbase.h"
14
15namespace blender::deg {
16
21
23{
24 sound_in = nullptr;
25 sound_out = nullptr;
26 last_buf = nullptr;
27}
28
41
51
53{
54 return sound_in == nullptr && sound_out == nullptr && last_buf == nullptr;
55}
56
57StripBackup::StripBackup(const Depsgraph * /*depsgraph*/)
58{
59 reset();
60}
61
63{
64 scene_sound = nullptr;
66 modifiers.clear();
67}
68
70{
71 scene_sound = strip->scene_sound;
72 anims = strip->anims;
73
75 StripModifierDataBackup mod_backup;
76 mod_backup.init_from_modifier(smd);
77 if (!mod_backup.isEmpty()) {
78 modifiers.add(smd->persistent_uid, mod_backup);
79 }
80 }
81
82 strip->scene_sound = nullptr;
84}
85
87{
88 strip->scene_sound = scene_sound;
89 strip->anims = anims;
90
92 std::optional<StripModifierDataBackup> backup = modifiers.pop_try(smd->persistent_uid);
93 if (backup.has_value()) {
94 backup->restore_to_modifier(smd);
95 }
96 }
97
98 reset();
99}
100
102{
103 return (scene_sound == nullptr) && BLI_listbase_is_empty(&anims) && modifiers.is_empty();
104}
105
106} // namespace blender::deg
#define LISTBASE_FOREACH(type, var, list)
BLI_INLINE void BLI_listbase_clear(ListBase *lb)
BLI_INLINE bool BLI_listbase_is_empty(const ListBase *lb)
@ eSeqModifierType_SoundEqualizer
Map< int, StripModifierDataBackup > modifiers
StripModifierDataRuntime runtime
void * scene_sound
ListBase modifiers
ListBase anims