diff --git a/src/macro-core/macro-segment.cpp b/src/macro-core/macro-segment.cpp index bf0e0b0e..7aa38281 100644 --- a/src/macro-core/macro-segment.cpp +++ b/src/macro-core/macro-segment.cpp @@ -25,6 +25,11 @@ bool MacroSegment::Load(obs_data_t *obj) return true; } +bool MacroSegment::PostLoad() +{ + return true; +} + std::string MacroSegment::GetShortDesc() const { return ""; diff --git a/src/macro-core/macro-segment.hpp b/src/macro-core/macro-segment.hpp index dc4d191d..223f9a8d 100644 --- a/src/macro-core/macro-segment.hpp +++ b/src/macro-core/macro-segment.hpp @@ -18,6 +18,7 @@ public: bool GetCollapsed() const { return _collapsed; } virtual bool Save(obs_data_t *obj) const = 0; virtual bool Load(obs_data_t *obj) = 0; + virtual bool PostLoad(); virtual std::string GetShortDesc() const; virtual std::string GetId() const = 0; void SetHighlight(); diff --git a/src/macro-core/macro.cpp b/src/macro-core/macro.cpp index 367fe2c1..45d6c657 100644 --- a/src/macro-core/macro.cpp +++ b/src/macro-core/macro.cpp @@ -489,6 +489,18 @@ bool Macro::Load(obs_data_t *obj) return true; } +bool Macro::PostLoad() +{ + ResolveMacroRef(); + for (auto &c : _conditions) { + c->PostLoad(); + } + for (auto &a : _actions) { + a->PostLoad(); + } + return true; +} + void Macro::ResolveMacroRef() { for (auto &c : _conditions) { @@ -699,7 +711,6 @@ void SwitcherData::loadMacros(obs_data_t *obj) int groupCount = 0; Macro *group = nullptr; for (auto &m : macros) { - m->ResolveMacroRef(); if (groupCount) { m->SetParent(group); groupCount--; @@ -708,6 +719,7 @@ void SwitcherData::loadMacros(obs_data_t *obj) groupCount = m->GroupSize(); group = m.get(); } + m->PostLoad(); } } diff --git a/src/macro-core/macro.hpp b/src/macro-core/macro.hpp index 3fd18c87..524ef3dd 100644 --- a/src/macro-core/macro.hpp +++ b/src/macro-core/macro.hpp @@ -63,6 +63,7 @@ public: bool Save(obs_data_t *obj) const; bool Load(obs_data_t *obj); + bool PostLoad(); // Some macros can refer to other macros, which are not yet loaded. // Use this function to set these references after loading is complete. void ResolveMacroRef();