Преглед изворни кода

UI: Simplify the OpenProjector logic

Shaolin пре 7 година
родитељ
комит
d13b4d35a0
1 измењених фајлова са 16 додато и 20 уклоњено
  1. 16 20
      UI/window-basic-main.cpp

+ 16 - 20
UI/window-basic-main.cpp

@@ -5585,16 +5585,26 @@ void OBSBasic::OpenProjector(obs_source_t *source, int monitor, bool window,
 	if (monitor > 9 || monitor > QGuiApplication::screens().size() - 1)
 		return;
 
-	if (!window) {
+	OBSProjector *projector = new OBSProjector(nullptr, source, !!window);
+	const char *name = obs_source_get_name(source);
+
+	if (window) {
+		projector->Init(monitor, true, title, type);
+
+		for (auto &projPtr : windowProjectors) {
+			if (!projPtr) {
+				projPtr = projector;
+				projector = nullptr;
+			}
+		}
+
+		if (projector)
+			windowProjectors.push_back(projector);
+	} else {
 		delete projectors[monitor];
 		projectors[monitor].clear();
 		RemoveSavedProjectors(monitor);
-	}
 
-	OBSProjector *projector = new OBSProjector(nullptr, source, !!window);
-	const char *name = obs_source_get_name(source);
-
-	if (!window) {
 		if (type == ProjectorType::StudioProgram) {
 			studioProgramProjectorArray.at((size_t)monitor) = 1;
 		} else if (type == ProjectorType::Preview) {
@@ -5604,23 +5614,9 @@ void OBSBasic::OpenProjector(obs_source_t *source, int monitor, bool window,
 		} else {
 			projectorArray.at((size_t)monitor) = name;
 		}
-	}
 
-	if (!window) {
 		projector->Init(monitor, false, nullptr, type);
 		projectors[monitor] = projector;
-	} else {
-		projector->Init(monitor, true, title, type);
-
-		for (auto &projPtr : windowProjectors) {
-			if (!projPtr) {
-				projPtr = projector;
-				projector = nullptr;
-			}
-		}
-
-		if (projector)
-			windowProjectors.push_back(projector);
 	}
 }