From a5c8d776f3d223ae39ffe1555a557709fffecb2a Mon Sep 17 00:00:00 2001 From: WarmUpTill Date: Mon, 24 Aug 2020 20:55:54 +0200 Subject: [PATCH] only try auto start streaming/recording once on scene chagne --- src/advanced-scene-switcher.cpp | 3 +++ src/general.cpp | 5 +++++ src/headers/switcher-data-structs.hpp | 7 ++++++- 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/advanced-scene-switcher.cpp b/src/advanced-scene-switcher.cpp index 6f937960..0f5daf80 100644 --- a/src/advanced-scene-switcher.cpp +++ b/src/advanced-scene-switcher.cpp @@ -362,6 +362,9 @@ void handleSceneChange(SwitcherData *s) s->previousScene = s->PreviousScene2; s->PreviousScene2 = ws; } + + //reset autostart + s->autoStartedRecently = false; } static void OBSEvent(enum obs_frontend_event event, void *switcher) diff --git a/src/general.cpp b/src/general.cpp index d35ac732..85e372ca 100644 --- a/src/general.cpp +++ b/src/general.cpp @@ -212,6 +212,9 @@ void SwitcherData::autoStartStreamRecording() obs_source_t *currentSource = obs_frontend_get_current_scene(); obs_weak_source_t *ws = obs_source_get_weak_source(currentSource); + if (autoStartedRecently) + return; + if (ws && autoStartScene == ws) { if ((switcher->autoStartType == STREAMING || switcher->autoStartType == RECORINDGSTREAMING) && @@ -224,6 +227,8 @@ void SwitcherData::autoStartStreamRecording() } obs_source_release(currentSource); obs_weak_source_release(ws); + + autoStartedRecently = true; } void SceneSwitcher::on_verboseLogging_stateChanged(int state) diff --git a/src/headers/switcher-data-structs.hpp b/src/headers/switcher-data-structs.hpp index 0863266a..5bf53612 100644 --- a/src/headers/switcher-data-structs.hpp +++ b/src/headers/switcher-data-structs.hpp @@ -254,7 +254,11 @@ struct TimeSwitch { typedef enum { NO_SWITCH = 0, SWITCH = 1, RANDOM_SWITCH = 2 } NoMatch; typedef enum { PERSIST = 0, START = 1, STOP = 2 } StartupBehavior; -typedef enum { RECORDING = 0, STREAMING = 1, RECORINDGSTREAMING = 2 } AutoStartType; +typedef enum { + RECORDING = 0, + STREAMING = 1, + RECORINDGSTREAMING = 2 +} AutoStartType; class SwitcherThread; @@ -312,6 +316,7 @@ struct SwitcherData { bool autoStartEnable = false; AutoStartType autoStartType = RECORDING; OBSWeakSource autoStartScene; + bool autoStartedRecently = false; std::vector sceneTransitions; std::vector defaultSceneTransitions;