From 0676c385ba5cedd9b5c6c3644ecde36623aa8874 Mon Sep 17 00:00:00 2001 From: Clayton Groeneveld Date: Thu, 24 Oct 2019 19:52:26 -0500 Subject: [PATCH] UI: Fix main transition being set to the quick one This fixes an issue where using a quick transition, it would change the main transition as well. --- UI/window-basic-main-transitions.cpp | 18 ++++++++++++------ UI/window-basic-main.hpp | 3 ++- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/UI/window-basic-main-transitions.cpp b/UI/window-basic-main-transitions.cpp index 76890c28d..f047e07fe 100644 --- a/UI/window-basic-main-transitions.cpp +++ b/UI/window-basic-main-transitions.cpp @@ -126,11 +126,13 @@ void OBSBasic::TriggerQuickTransition(int id) OBSScene scene = GetCurrentScene(); obs_source_t *source = obs_scene_get_source(scene); - ui->transitionDuration->setValue(qt->duration); - if (GetCurrentTransition() != qt->source) - SetTransition(qt->source); + if (GetCurrentTransition() != qt->source) { + OverrideTransition(qt->source); + overridingTransition = true; + } - TransitionToScene(source, false, false, true, qt->fadeToBlack); + TransitionToScene(source, false, false, true, qt->duration, + qt->fadeToBlack); } } @@ -281,7 +283,7 @@ void OBSBasic::TransitionStopped() swapScene = nullptr; } -static void OverrideTransition(OBSSource transition) +void OBSBasic::OverrideTransition(OBSSource transition) { obs_source_t *oldTransition = obs_get_output_source(0); @@ -303,7 +305,8 @@ void OBSBasic::TransitionFullyStopped() } void OBSBasic::TransitionToScene(OBSSource source, bool force, bool direct, - bool quickTransition, bool black) + bool quickTransition, int quickDuration, + bool black) { obs_scene_t *scene = obs_scene_from_source(source); bool usingPreviewProgram = IsPreviewProgramMode(); @@ -384,6 +387,9 @@ void OBSBasic::TransitionToScene(OBSSource source, bool force, bool direct, prevFTBSource = nullptr; } + if (quickTransition) + duration = quickDuration; + bool success = obs_transition_start( transition, OBS_TRANSITION_MODE_AUTO, duration, source); if (!success) diff --git a/UI/window-basic-main.hpp b/UI/window-basic-main.hpp index 5be582d27..f7a37dbe4 100644 --- a/UI/window-basic-main.hpp +++ b/UI/window-basic-main.hpp @@ -476,12 +476,13 @@ public slots: void SaveProject(); void SetTransition(OBSSource transition); + void OverrideTransition(OBSSource transition); void TransitionToScene(OBSScene scene, bool force = false, bool direct = false); void TransitionToScene(OBSSource scene, bool force = false, bool direct = false, bool quickTransition = false, - bool black = false); + int quickDuration = 0, bool black = false); void SetCurrentScene(OBSSource scene, bool force = false, bool direct = false);