From 45e5738d2c3130ee00774c4e85685df0ca573b1f Mon Sep 17 00:00:00 2001 From: WarmUpTill Date: Sun, 8 Nov 2020 19:59:56 +0100 Subject: [PATCH 1/3] do not hold main lock in callback handling --- src/advanced-scene-switcher.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/advanced-scene-switcher.cpp b/src/advanced-scene-switcher.cpp index de4a3e3e..97ac9ec4 100644 --- a/src/advanced-scene-switcher.cpp +++ b/src/advanced-scene-switcher.cpp @@ -515,7 +515,6 @@ extern "C" void FreeSceneSwitcher() void handleSceneChange(SwitcherData *s) { - std::lock_guard lock(s->m); //stop waiting if scene was manually changed if (s->sceneChangedDuringWait()) s->cv.notify_one(); From a0119426d65e9f44657b1accdf55c7b4fdc6fd05 Mon Sep 17 00:00:00 2001 From: WarmUpTill Date: Mon, 9 Nov 2020 22:53:26 +0100 Subject: [PATCH 2/3] remove dead code --- src/advanced-scene-switcher.cpp | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/advanced-scene-switcher.cpp b/src/advanced-scene-switcher.cpp index 97ac9ec4..1cba5377 100644 --- a/src/advanced-scene-switcher.cpp +++ b/src/advanced-scene-switcher.cpp @@ -330,7 +330,6 @@ void SwitcherData::Thread() int sleep = 0; while (true) { - startLoop: std::unique_lock lock(m); bool match = false; OBSWeakSource scene; @@ -393,10 +392,6 @@ void SwitcherData::Thread() case round_trip_func: checkSceneSequence(match, scene, transition, lock); - if (sceneChangedDuringWait()) //scene might have changed during the sleep - { - goto startLoop; - } break; case media_func: checkMediaSwitch(match, scene, transition); From e5fffa0b82a8b7dd9fd960fa4e543cc295bace7e Mon Sep 17 00:00:00 2001 From: WarmUpTill Date: Mon, 9 Nov 2020 22:55:05 +0100 Subject: [PATCH 3/3] log if sequence is canceled if verbose --- src/switch-sequence.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/switch-sequence.cpp b/src/switch-sequence.cpp index 082cf988..b1f35934 100644 --- a/src/switch-sequence.cpp +++ b/src/switch-sequence.cpp @@ -183,7 +183,10 @@ void SwitcherData::checkSceneSequence(bool &match, OBSWeakSource &scene, transition = s.transition; if (verbose) s.logMatch(); + } else if (verbose) { + blog(LOG_INFO, "sequence canceled"); } + obs_source_release(currentSource2); break; }