diff --git a/lib/advanced-scene-switcher.cpp b/lib/advanced-scene-switcher.cpp index 24f2fb31..f800406d 100644 --- a/lib/advanced-scene-switcher.cpp +++ b/lib/advanced-scene-switcher.cpp @@ -774,8 +774,6 @@ void HighlightMacroSettingsButton(bool enable) enable); } -void SetupActionQueues(); - extern "C" EXPORT void InitSceneSwitcher(obs_module_t *module, translateFunc translate) { @@ -787,7 +785,6 @@ extern "C" EXPORT void InitSceneSwitcher(obs_module_t *module, PlatformInit(); LoadPlugins(); SetupDock(); - SetupActionQueues(); RunPluginInitSteps(); diff --git a/lib/general.cpp b/lib/general.cpp index cbabb3a8..f25393af 100644 --- a/lib/general.cpp +++ b/lib/general.cpp @@ -468,7 +468,6 @@ void SwitcherData::LoadSettings(obs_data_t *obj) // Needs to be loaded before any entries which might rely on scene group // selections to be available. loadSceneGroups(obj); - LoadVariables(obj); RunLoadSteps(obj); @@ -507,7 +506,6 @@ void SwitcherData::SaveSettings(obs_data_t *obj) saveSceneGroups(obj); SaveMacros(obj); SaveGlobalMacroSettings(obj); - SaveVariables(obj); saveWindowTitleSwitches(obj); saveScreenRegionSwitches(obj); savePauseSwitches(obj); diff --git a/lib/queue/action-queue-tab.cpp b/lib/queue/action-queue-tab.cpp index a1e13250..75f116fa 100644 --- a/lib/queue/action-queue-tab.cpp +++ b/lib/queue/action-queue-tab.cpp @@ -16,14 +16,17 @@ static void setupTab(QTabWidget *); static ActionQueueTable *tabWidget = nullptr; -void RegisterActionQueueTab() +static bool setup() { - AddPluginInitStep([]() { + AddPluginInitStep([] { AddSetupTabCallback("actionQueueTab", ActionQueueTable::Create, setupTab); }); + return true; } +static bool setupDone = setup(); + static void setTabVisible(QTabWidget *tabWidget, bool visible) { SetTabVisibleByName( diff --git a/lib/queue/action-queue.cpp b/lib/queue/action-queue.cpp index a9c640d0..7fca0d18 100644 --- a/lib/queue/action-queue.cpp +++ b/lib/queue/action-queue.cpp @@ -12,20 +12,16 @@ std::deque> &GetActionQueues() return queues; } -void RegisterActionQueueTab(); - -void SetupActionQueues() +static bool setup() { - static bool done = false; - if (done) { - return; - } AddSaveStep(SaveActionQueues); AddLoadStep(LoadActionQueues); - RegisterActionQueueTab(); - done = true; + AddPluginCleanupStep([]() { queues.clear(); }); + return true; } +static bool setupDone = setup(); + ActionQueue::ActionQueue() : Item() { _lastEmpty = std::chrono::high_resolution_clock::now(); diff --git a/lib/queue/action-queue.hpp b/lib/queue/action-queue.hpp index 7c54ae1c..bf448c06 100644 --- a/lib/queue/action-queue.hpp +++ b/lib/queue/action-queue.hpp @@ -101,7 +101,6 @@ signals: }; std::deque> &GetActionQueues(); -void SetupActionQueues(); void SaveActionQueues(obs_data_t *); void LoadActionQueues(obs_data_t *); void ImportQueues(obs_data_t *); diff --git a/lib/variables/variable.cpp b/lib/variables/variable.cpp index d99b49bc..61b3ec8d 100644 --- a/lib/variables/variable.cpp +++ b/lib/variables/variable.cpp @@ -1,6 +1,7 @@ #include "variable.hpp" #include "math-helpers.hpp" #include "obs-module-helper.hpp" +#include "plugin-state-helpers.hpp" #include "ui-helpers.hpp" #include "utility.hpp" @@ -17,6 +18,15 @@ static std::deque> variables; static std::mutex lastVariableChangeMutex; static std::chrono::high_resolution_clock::time_point lastVariableChange{}; +static bool setup() +{ + AddSaveStep(SaveVariables); + AddLoadStep(LoadVariables); + AddPluginCleanupStep([]() { variables.clear(); }); + return true; +} +static bool setupDone = setup(); + static void setLastVariableChangeTime() { std::lock_guard lock(lastVariableChangeMutex);