diff --git a/data/locale/en-US.ini b/data/locale/en-US.ini
index 844296e0..204c63ad 100644
--- a/data/locale/en-US.ini
+++ b/data/locale/en-US.ini
@@ -37,6 +37,7 @@ AdvSceneSwitcher.generalTab.generalBehavior.disableUIHints="Disable UI hints"
AdvSceneSwitcher.generalTab.generalBehavior.comboBoxFilterDisable="Disable filtering by typing in drop down menus"
AdvSceneSwitcher.generalTab.generalBehavior.warnPluginLoadFailure="Display warning if plugins cannot be loaded"
AdvSceneSwitcher.generalTab.generalBehavior.warnPluginLoadFailureMessage="
Loading of the following plugin libraries was unsuccessful, which could result in some Advanced Scene Switcher functions not being available:%1Check the OBS logs for details.
This message can be disabled on the General tab."
+AdvSceneSwitcher.generalTab.generalBehavior.warnCorruptedInstallMessage="The plugin installation seems to be corrupted and might crash!\nPlease make sure the plugin was installed correctly!"
AdvSceneSwitcher.generalTab.generalBehavior.hideLegacyTabs="Hide tabs which can be represented via macros"
AdvSceneSwitcher.generalTab.matchBehavior="Match behavior"
AdvSceneSwitcher.generalTab.priority="Priority"
diff --git a/lib/advanced-scene-switcher.cpp b/lib/advanced-scene-switcher.cpp
index 50f42ce0..756e9cac 100644
--- a/lib/advanced-scene-switcher.cpp
+++ b/lib/advanced-scene-switcher.cpp
@@ -93,10 +93,24 @@ static void DisplayMissingDataDirWarning()
DisplayMessage(msg);
}
+bool CanCreateDefaultAction();
+bool CanCreateDefaultCondition();
+
+static void DisplayCorruptedInstallWarning()
+{
+ if (CanCreateDefaultAction() && CanCreateDefaultCondition()) {
+ return;
+ }
+
+ DisplayMessage(obs_module_text(
+ "AdvSceneSwitcher.generalTab.generalBehavior.warnCorruptedInstallMessage"));
+}
+
void AdvSceneSwitcher::LoadUI()
{
DisplayMissingDataDirWarning();
DisplayMissingDependencyWarning();
+ DisplayCorruptedInstallWarning();
SetupGeneralTab();
SetupTitleTab();
diff --git a/lib/macro/macro-action-factory.cpp b/lib/macro/macro-action-factory.cpp
index 309f7024..57fe2ec4 100644
--- a/lib/macro/macro-action-factory.cpp
+++ b/lib/macro/macro-action-factory.cpp
@@ -54,4 +54,11 @@ std::string MacroActionFactory::GetIdByName(const QString &name)
return "";
}
+bool CanCreateDefaultAction()
+{
+ const auto action = MacroActionFactory::Create(
+ MacroAction::GetDefaultID().data(), nullptr);
+ return !!action;
+}
+
} // namespace advss
diff --git a/lib/macro/macro-action-factory.hpp b/lib/macro/macro-action-factory.hpp
index 59970d10..38366867 100644
--- a/lib/macro/macro-action-factory.hpp
+++ b/lib/macro/macro-action-factory.hpp
@@ -31,4 +31,6 @@ private:
static std::map &GetMap();
};
+bool CanCreateDefaultAction();
+
} // namespace advss
diff --git a/lib/macro/macro-condition-factory.cpp b/lib/macro/macro-condition-factory.cpp
index 3dfe1ef6..8442eef3 100644
--- a/lib/macro/macro-condition-factory.cpp
+++ b/lib/macro/macro-condition-factory.cpp
@@ -63,4 +63,11 @@ bool MacroConditionFactory::UsesDurationModifier(const std::string &id)
return false;
}
+bool CanCreateDefaultCondition()
+{
+ const auto condition = MacroConditionFactory::Create(
+ MacroCondition::GetDefaultID().data(), nullptr);
+ return !!condition;
+}
+
} // namespace advss
diff --git a/lib/macro/macro-condition-factory.hpp b/lib/macro/macro-condition-factory.hpp
index 4cae86ef..32defbc9 100644
--- a/lib/macro/macro-condition-factory.hpp
+++ b/lib/macro/macro-condition-factory.hpp
@@ -32,4 +32,6 @@ private:
static std::map &GetMap();
};
+bool CanCreateDefaultCondition();
+
} // namespace advss