Przeglądaj źródła

UI: Change output blocking bool to integer ref counter

jp9000 8 lat temu
rodzic
commit
4ff7ac0bfa
2 zmienionych plików z 10 dodań i 5 usunięć
  1. 3 3
      UI/window-basic-main.cpp
  2. 7 2
      UI/window-basic-main.hpp

+ 3 - 3
UI/window-basic-main.cpp

@@ -3958,7 +3958,7 @@ void OBSBasic::StartStreaming()
 {
 	if (outputHandler->StreamingActive())
 		return;
-	if (!enableOutputs)
+	if (disableOutputsRef)
 		return;
 
 	if (api)
@@ -4250,7 +4250,7 @@ void OBSBasic::StartRecording()
 {
 	if (outputHandler->RecordingActive())
 		return;
-	if (!enableOutputs)
+	if (disableOutputsRef)
 		return;
 
 	if (api)
@@ -4352,7 +4352,7 @@ void OBSBasic::StartReplayBuffer()
 		return;
 	if (outputHandler->ReplayBufferActive())
 		return;
-	if (!enableOutputs)
+	if (disableOutputsRef)
 		return;
 
 	obs_output_t *output = outputHandler->replayBuffer;

+ 7 - 2
UI/window-basic-main.hpp

@@ -318,7 +318,7 @@ private:
 	int   programCX = 0, programCY = 0;
 	float programScale = 0.0f;
 
-	bool enableOutputs = true;
+	int disableOutputsRef = 0;
 
 	inline bool IsPreviewProgramMode() const
 	{
@@ -501,7 +501,12 @@ public:
 
 	inline void EnableOutputs(bool enable)
 	{
-		enableOutputs = enable;
+		if (enable) {
+			if (--disableOutputsRef < 0)
+				disableOutputsRef = 0;
+		} else {
+			disableOutputsRef++;
+		}
 	}
 
 	void ReorderSceneItem(obs_sceneitem_t *item, size_t idx);