Improve scene trigger handling (#117)

This commit is contained in:
WarmUpTill
2021-02-06 18:23:57 +01:00
committed by GitHub
parent c31d1cd975
commit 5bbfef81e0
2 changed files with 11 additions and 8 deletions

View File

@@ -36,7 +36,8 @@ struct SceneTrigger : SceneSwitcherEntry {
void save(obs_data_t *obj);
void load(obs_data_t *obj);
bool checkMatch(OBSWeakSource previousScene);
bool checkMatch(OBSWeakSource currentScene,
OBSWeakSource previousScene);
void performAction();
void logMatch();
};

View File

@@ -223,13 +223,9 @@ void SceneTrigger::performAction()
t.detach();
}
bool SceneTrigger::checkMatch(OBSWeakSource previousScene)
bool SceneTrigger::checkMatch(OBSWeakSource currentScene,
OBSWeakSource previousScene)
{
OBSSource source = obs_frontend_get_current_scene();
OBSWeakSource currentScene = obs_source_get_weak_source(source);
obs_source_release(source);
obs_weak_source_release(currentScene);
switch (triggerType) {
case sceneTriggerType::NONE:
return false;
@@ -249,12 +245,18 @@ void SwitcherData::checkTriggers()
return;
}
OBSSource source = obs_frontend_get_current_scene();
OBSWeakSource currentScene = obs_source_get_weak_source(source);
for (auto &t : sceneTriggers) {
if (t.checkMatch(previousScene)) {
if (t.checkMatch(currentScene, previousScene)) {
t.logMatch();
t.performAction();
}
}
obs_source_release(source);
obs_weak_source_release(currentScene);
}
void SwitcherData::saveSceneTriggers(obs_data_t *obj)