浏览代码

Merge pull request #2144 from cg2121/quick-tr-fix

UI: Fix main transition being set to the quick one
Jim 6 年之前
父节点
当前提交
647e7e24a1
共有 2 个文件被更改,包括 14 次插入7 次删除
  1. 12 6
      UI/window-basic-main-transitions.cpp
  2. 2 1
      UI/window-basic-main.hpp

+ 12 - 6
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)

+ 2 - 1
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);