Browse Source

frontend: Simplify how projectors are saved/loaded

This removes unnecessary code when loading and saving projectors.
cg2121 1 year ago
parent
commit
43be123b73

+ 0 - 2
frontend/widgets/OBSBasic.hpp

@@ -915,7 +915,6 @@ public slots:
 	 * -------------------------------------
 	 */
 private:
-	std::vector<SavedProjectorInfo *> savedProjectorsArray;
 	std::vector<OBSProjector *> projectors;
 	QPointer<QMenu> previewProjector;
 	QPointer<QMenu> previewProjectorSource;
@@ -942,7 +941,6 @@ private slots:
 	void OpenSceneWindow();
 
 public:
-	void OpenSavedProjectors();
 	void DeleteProjector(OBSProjector *projector);
 
 	static QList<QString> GetProjectorMenuMonitorsFormatted();

+ 0 - 1
frontend/widgets/OBSBasic_Preview.cpp

@@ -566,7 +566,6 @@ void OBSBasic::ResetProjectors()
 	OBSDataArrayAutoRelease savedProjectorList = SaveProjectors();
 	ClearProjectors();
 	LoadSavedProjectors(savedProjectorList);
-	OpenSavedProjectors();
 }
 
 void OBSBasic::UpdatePreviewSafeAreas()

+ 8 - 20
frontend/widgets/OBSBasic_Projectors.cpp

@@ -63,25 +63,20 @@ obs_data_array_t *OBSBasic::SaveProjectors()
 
 void OBSBasic::LoadSavedProjectors(obs_data_array_t *array)
 {
-	for (SavedProjectorInfo *info : savedProjectorsArray) {
-		delete info;
-	}
-	savedProjectorsArray.clear();
-
 	size_t num = obs_data_array_count(array);
 
 	for (size_t i = 0; i < num; i++) {
 		OBSDataAutoRelease data = obs_data_array_item(array, i);
+		SavedProjectorInfo info = {};
 
-		SavedProjectorInfo *info = new SavedProjectorInfo();
-		info->monitor = obs_data_get_int(data, "monitor");
-		info->type = static_cast<ProjectorType>(obs_data_get_int(data, "type"));
-		info->geometry = std::string(obs_data_get_string(data, "geometry"));
-		info->name = std::string(obs_data_get_string(data, "name"));
-		info->alwaysOnTop = obs_data_get_bool(data, "alwaysOnTop");
-		info->alwaysOnTopOverridden = obs_data_get_bool(data, "alwaysOnTopOverridden");
+		info.monitor = obs_data_get_int(data, "monitor");
+		info.type = static_cast<ProjectorType>(obs_data_get_int(data, "type"));
+		info.geometry = std::string(obs_data_get_string(data, "geometry"));
+		info.name = std::string(obs_data_get_string(data, "name"));
+		info.alwaysOnTop = obs_data_get_bool(data, "alwaysOnTop");
+		info.alwaysOnTopOverridden = obs_data_get_bool(data, "alwaysOnTopOverridden");
 
-		savedProjectorsArray.emplace_back(info);
+		OpenSavedProjector(&info);
 	}
 }
 
@@ -225,13 +220,6 @@ void OBSBasic::OpenSceneWindow()
 	OpenProjector(obs_scene_get_source(scene), -1, ProjectorType::Scene);
 }
 
-void OBSBasic::OpenSavedProjectors()
-{
-	for (SavedProjectorInfo *info : savedProjectorsArray) {
-		OpenSavedProjector(info);
-	}
-}
-
 void OBSBasic::OpenSavedProjector(SavedProjectorInfo *info)
 {
 	if (info) {

+ 0 - 1
frontend/widgets/OBSBasic_SceneCollections.cpp

@@ -1279,7 +1279,6 @@ retryScene:
 
 		if (savedProjectors) {
 			LoadSavedProjectors(savedProjectors);
-			OpenSavedProjectors();
 			activateWindow();
 		}
 	}