diff --git a/lib/general.cpp b/lib/general.cpp index fca668e0..7627dba2 100644 --- a/lib/general.cpp +++ b/lib/general.cpp @@ -459,7 +459,7 @@ void SwitcherData::LoadSettings(obs_data_t *obj) LoadHotkeys(obj); LoadUISettings(obj); - RunPostLoadSteps(); + RunAndClearPostLoadSteps(); // Reset on startup and scene collection change ResetLastOpenedTab(); diff --git a/lib/macro/macro-action-edit.cpp b/lib/macro/macro-action-edit.cpp index 9c7b13e1..9d314c29 100644 --- a/lib/macro/macro-action-edit.cpp +++ b/lib/macro/macro-action-edit.cpp @@ -117,7 +117,7 @@ void MacroActionEdit::ActionSelectionChanged(const QString &text) *_entryData = MacroActionFactory::Create(id, macro); (*_entryData)->SetIndex(idx); (*_entryData)->PostLoad(); - RunPostLoadSteps(); + RunAndClearPostLoadSteps(); } auto widget = MacroActionFactory::CreateWidget(id, this, *_entryData); QWidget::connect(widget, SIGNAL(HeaderInfoChanged(const QString &)), diff --git a/lib/macro/macro-condition-edit.cpp b/lib/macro/macro-condition-edit.cpp index a931c8d4..065f7cd7 100644 --- a/lib/macro/macro-condition-edit.cpp +++ b/lib/macro/macro-condition-edit.cpp @@ -239,7 +239,7 @@ void MacroConditionEdit::ConditionSelectionChanged(const QString &text) (*_entryData)->SetIndex(idx); (*_entryData)->SetLogicType(logic); (*_entryData)->PostLoad(); - RunPostLoadSteps(); + RunAndClearPostLoadSteps(); } auto widget = MacroConditionFactory::CreateWidget(id, this, *_entryData); diff --git a/lib/macro/macro-edit.cpp b/lib/macro/macro-edit.cpp index 36d5a520..2d75838f 100644 --- a/lib/macro/macro-edit.cpp +++ b/lib/macro/macro-edit.cpp @@ -1080,7 +1080,7 @@ void MacroEdit::AddMacroAction(Macro *macro, int idx, const std::string &id, macro->Actions().at(idx)->Load(data); } macro->Actions().at(idx)->PostLoad(); - RunPostLoadSteps(); + RunAndClearPostLoadSteps(); macro->UpdateActionIndices(); ui->actionsList->Insert( idx, @@ -1383,7 +1383,7 @@ void MacroEdit::AddMacroElseAction(Macro *macro, int idx, const std::string &id, macro->ElseActions().at(idx)->Load(data); } macro->ElseActions().at(idx)->PostLoad(); - RunPostLoadSteps(); + RunAndClearPostLoadSteps(); macro->UpdateElseActionIndices(); ui->elseActionsList->Insert( idx, new MacroActionEdit( @@ -1583,7 +1583,7 @@ void MacroEdit::AddMacroCondition(Macro *macro, int idx, const std::string &id, macro->Conditions().at(idx)->Load(data); } macro->Conditions().at(idx)->PostLoad(); - RunPostLoadSteps(); + RunAndClearPostLoadSteps(); (*cond)->SetLogicType(logic); macro->UpdateConditionIndices(); ui->conditionsList->Insert( diff --git a/lib/macro/macro-tab.cpp b/lib/macro/macro-tab.cpp index 7feee480..852d6f56 100644 --- a/lib/macro/macro-tab.cpp +++ b/lib/macro/macro-tab.cpp @@ -416,7 +416,7 @@ void AdvSceneSwitcher::ImportMacros() OBSDataAutoRelease array_obj = obs_data_array_item(array, i); auto macro = std::make_shared(); macro->Load(array_obj); - RunPostLoadSteps(); + RunAndClearPostLoadSteps(); if (macroNameExists(macro->Name()) && !ResolveMacroImportNameConflict(macro)) { @@ -444,7 +444,7 @@ void AdvSceneSwitcher::ImportMacros() for (const auto ¯o : importedMacros) { macro->PostLoad(); } - RunPostLoadSteps(); + RunAndClearPostLoadSteps(); ui->macros->Reset(GetMacros(), GetGlobalMacroSettings()._highlightExecuted); @@ -752,7 +752,7 @@ void AdvSceneSwitcher::CopyMacro() newMacro->Load(data); newMacro->PostLoad(); newMacro->SetName(name); - RunPostLoadSteps(); + RunAndClearPostLoadSteps(); Macro::PrepareMoveToGroup(macro->Parent(), newMacro); ui->macros->Add(newMacro, macro); diff --git a/lib/queue/action-queue.cpp b/lib/queue/action-queue.cpp index 1132b243..d6223126 100644 --- a/lib/queue/action-queue.cpp +++ b/lib/queue/action-queue.cpp @@ -113,7 +113,7 @@ void ActionQueue::Add(const std::shared_ptr &action) action->Save(data); copy->Load(data); copy->PostLoad(); - RunPostLoadSteps(); + RunAndClearPostLoadSteps(); copy->ResolveVariablesToFixedValues(); _actions.emplace_back(copy); } else { diff --git a/lib/utils/plugin-state-helpers.cpp b/lib/utils/plugin-state-helpers.cpp index 977d77da..4e04192f 100644 --- a/lib/utils/plugin-state-helpers.cpp +++ b/lib/utils/plugin-state-helpers.cpp @@ -113,12 +113,13 @@ void RunLoadSteps(obs_data_t *obj) } } -void RunPostLoadSteps() +void RunAndClearPostLoadSteps() { std::lock_guard lock(postLoadMutex); for (const auto &func : getPostLoadSteps()) { func(); } + getPostLoadSteps().clear(); } void ClearPostLoadSteps() diff --git a/lib/utils/plugin-state-helpers.hpp b/lib/utils/plugin-state-helpers.hpp index e5f42110..4251d7d3 100644 --- a/lib/utils/plugin-state-helpers.hpp +++ b/lib/utils/plugin-state-helpers.hpp @@ -14,7 +14,7 @@ EXPORT void AddPostLoadStep(std::function); EXPORT void AddIntervalResetStep(std::function); void RunSaveSteps(obs_data_t *); void RunLoadSteps(obs_data_t *); -EXPORT void RunPostLoadSteps(); +EXPORT void RunAndClearPostLoadSteps(); void ClearPostLoadSteps(); EXPORT void AddPluginInitStep(std::function);