diff --git a/src/headers/switch-media.hpp b/src/headers/switch-media.hpp index f9866d15..9e448ad6 100644 --- a/src/headers/switch-media.hpp +++ b/src/headers/switch-media.hpp @@ -18,6 +18,9 @@ struct MediaSwitch : SceneSwitcherEntry { bool anyState = false; time_restriction restriction = TIME_RESTRICTION_NONE; int64_t time = 0; + + bool matched = false; + std::atomic stopped = false; std::atomic ended = false; diff --git a/src/switch-media.cpp b/src/switch-media.cpp index 69fe5f7b..63359607 100644 --- a/src/switch-media.cpp +++ b/src/switch-media.cpp @@ -151,7 +151,7 @@ void SwitcherData::checkMediaSwitch(bool &match, OBSWeakSource &scene, bool matched = matchedState && matchedTime; - if (matched) { + if (matched && !mediaSwitch.matched) { match = true; scene = (mediaSwitch.usePreviousScene) ? previousScene @@ -160,8 +160,12 @@ void SwitcherData::checkMediaSwitch(bool &match, OBSWeakSource &scene, if (verbose) mediaSwitch.logMatch(); - break; } + + mediaSwitch.matched = matched; + + if (match) + break; } }