Sfoglia il codice sorgente

UI: Fix studio program projectors

The studio mode program view projectors used the wrong saving mechanism.
The save data was copied from the source projectors, which were
dependent on string values, where as it should have been using a boolean
true/false value for specific monitors.
jp9000 8 anni fa
parent
commit
b5c036974f
2 ha cambiato i file con 12 aggiunte e 29 eliminazioni
  1. 11 28
      UI/window-basic-main.cpp
  2. 1 1
      UI/window-basic-main.hpp

+ 11 - 28
UI/window-basic-main.cpp

@@ -139,7 +139,7 @@ OBSBasic::OBSBasic(QWidget *parent)
 
 
 	projectorArray.resize(10, "");
 	projectorArray.resize(10, "");
 	previewProjectorArray.resize(10, 0);
 	previewProjectorArray.resize(10, 0);
-	studioProgramProjectorArray.resize(10, "");
+	studioProgramProjectorArray.resize(10, 0);
 
 
 	setAcceptDrops(true);
 	setAcceptDrops(true);
 
 
@@ -459,8 +459,8 @@ obs_data_array_t *OBSBasic::SaveStudioProgramProjectors()
 
 
 	for (size_t i = 0; i < studioProgramProjectorArray.size(); i++) {
 	for (size_t i = 0; i < studioProgramProjectorArray.size(); i++) {
 		obs_data_t *data = obs_data_create();
 		obs_data_t *data = obs_data_create();
-		obs_data_set_string(data, "saved_studio_preview_projectors",
-			studioProgramProjectorArray.at(i).c_str());
+		obs_data_set_int(data, "saved_studio_preview_projectors",
+			studioProgramProjectorArray.at(i));
 		obs_data_array_push_back(saveProjector, data);
 		obs_data_array_push_back(saveProjector, data);
 		obs_data_release(data);
 		obs_data_release(data);
 	}
 	}
@@ -646,7 +646,7 @@ void OBSBasic::LoadSavedStudioProgramProjectors(obs_data_array_t *array)
 
 
 	for (size_t i = 0; i < num; i++) {
 	for (size_t i = 0; i < num; i++) {
 		obs_data_t *data = obs_data_array_item(array, i);
 		obs_data_t *data = obs_data_array_item(array, i);
-		studioProgramProjectorArray.at(i) = obs_data_get_string(data,
+		studioProgramProjectorArray.at(i) = obs_data_get_int(data,
 				"saved_studio_preview_projectors");
 				"saved_studio_preview_projectors");
 
 
 		obs_data_release(data);
 		obs_data_release(data);
@@ -5442,7 +5442,7 @@ void OBSBasic::OpenProjector(obs_source_t *source, int monitor, bool window,
 
 
 	if (!window) {
 	if (!window) {
 		if (studioProgram) {
 		if (studioProgram) {
-			studioProgramProjectorArray.at((size_t)monitor) = name;
+			studioProgramProjectorArray.at((size_t)monitor) = 1;
 		} else if (isPreview) {
 		} else if (isPreview) {
 			previewProjectorArray.at((size_t)monitor) = 1;
 			previewProjectorArray.at((size_t)monitor) = 1;
 		} else {
 		} else {
@@ -5471,11 +5471,7 @@ void OBSBasic::OpenProjector(obs_source_t *source, int monitor, bool window,
 void OBSBasic::OpenStudioProgramProjector()
 void OBSBasic::OpenStudioProgramProjector()
 {
 {
 	int monitor = sender()->property("monitor").toInt();
 	int monitor = sender()->property("monitor").toInt();
-	obs_source_t *source = GetCurrentSceneSource();
-	if (!source)
-		return;
-
-	OpenProjector(source, monitor, false, nullptr, true);
+	OpenProjector(nullptr, monitor, false, nullptr, true);
 }
 }
 
 
 void OBSBasic::OpenPreviewProjector()
 void OBSBasic::OpenPreviewProjector()
@@ -5508,11 +5504,7 @@ void OBSBasic::OpenStudioProgramWindow()
 {
 {
 	int monitor = sender()->property("monitor").toInt();
 	int monitor = sender()->property("monitor").toInt();
 	QString title = QTStr("StudioProgramWindow");
 	QString title = QTStr("StudioProgramWindow");
-	obs_source_t *source = GetCurrentSceneSource();
-	if (!source)
-		return;
-
-	OpenProjector(source, monitor, true, title, true);
+	OpenProjector(nullptr, monitor, true, title, true);
 }
 }
 
 
 void OBSBasic::OpenPreviewWindow()
 void OBSBasic::OpenPreviewWindow()
@@ -5575,18 +5567,9 @@ void OBSBasic::OpenSavedProjectors()
 		}
 		}
 
 
 		for (size_t i = 0; i < studioProgramProjectorArray.size(); i++) {
 		for (size_t i = 0; i < studioProgramProjectorArray.size(); i++) {
-			if (studioProgramProjectorArray.at(i).empty() == false) {
-				OBSSource source = obs_get_source_by_name(
-					studioProgramProjectorArray.at(i).c_str());
-
-				if (!source) {
-					RemoveSavedProjectors((int)i);
-					obs_source_release(source);
-					continue;
-				}
-
-				OpenProjector(source, (int)i, false, nullptr, true);
-				obs_source_release(source);
+			if (studioProgramProjectorArray.at(i) == 1) {
+				OpenProjector(nullptr, (int)i, false, nullptr,
+						true);
 			}
 			}
 		}
 		}
 
 
@@ -5600,7 +5583,7 @@ void OBSBasic::OpenSavedProjectors()
 
 
 void OBSBasic::RemoveSavedProjectors(int monitor)
 void OBSBasic::RemoveSavedProjectors(int monitor)
 {
 {
-	studioProgramProjectorArray.at((size_t)monitor) = "";
+	studioProgramProjectorArray.at((size_t)monitor) = 0;
 	previewProjectorArray.at((size_t)monitor) = 0;
 	previewProjectorArray.at((size_t)monitor) = 0;
 	projectorArray.at((size_t)monitor) = "";
 	projectorArray.at((size_t)monitor) = "";
 }
 }

+ 1 - 1
UI/window-basic-main.hpp

@@ -114,7 +114,7 @@ private:
 	std::vector<OBSSignal> signalHandlers;
 	std::vector<OBSSignal> signalHandlers;
 
 
 	std::vector<std::string> projectorArray;
 	std::vector<std::string> projectorArray;
-	std::vector<std::string> studioProgramProjectorArray;
+	std::vector<int> studioProgramProjectorArray;
 	std::vector<int> previewProjectorArray;
 	std::vector<int> previewProjectorArray;
 
 
 	bool loaded = false;
 	bool loaded = false;