Преглед на файлове

UI: Save last used output resolution to scene collection

derrod преди 1 година
родител
ревизия
46c00a95cd
променени са 2 файла, в които са добавени 13 реда и са изтрити 0 реда
  1. 12 0
      UI/window-basic-main.cpp
  2. 1 0
      UI/window-basic-main.hpp

+ 12 - 0
UI/window-basic-main.cpp

@@ -847,6 +847,13 @@ void OBSBasic::Save(const char *file)
 		}
 		}
 	}
 	}
 
 
+	if (lastOutputResolution) {
+		OBSDataAutoRelease res = obs_data_create();
+		obs_data_set_int(res, "x", lastOutputResolution->first);
+		obs_data_set_int(res, "y", lastOutputResolution->second);
+		obs_data_set_obj(saveData, "resolution", res);
+	}
+
 	if (!obs_data_save_json_safe(saveData, file, "tmp", "bak"))
 	if (!obs_data_save_json_safe(saveData, file, "tmp", "bak"))
 		blog(LOG_ERROR, "Could not save scene data to %s", file);
 		blog(LOG_ERROR, "Could not save scene data to %s", file);
 }
 }
@@ -1077,6 +1084,7 @@ void OBSBasic::LogScenes()
 void OBSBasic::Load(const char *file)
 void OBSBasic::Load(const char *file)
 {
 {
 	disableSaving++;
 	disableSaving++;
+	lastOutputResolution.reset();
 
 
 	obs_data_t *data = obs_data_create_from_json_file_safe(file, "bak");
 	obs_data_t *data = obs_data_create_from_json_file_safe(file, "bak");
 	if (!data) {
 	if (!data) {
@@ -7171,6 +7179,10 @@ inline void OBSBasic::OnActivate(bool force)
 		App()->IncrementSleepInhibition();
 		App()->IncrementSleepInhibition();
 		UpdateProcessPriority();
 		UpdateProcessPriority();
 
 
+		struct obs_video_info ovi;
+		obs_get_video_info(&ovi);
+		lastOutputResolution = {ovi.base_width, ovi.base_height};
+
 		TaskbarOverlaySetStatus(TaskbarOverlayStatusActive);
 		TaskbarOverlaySetStatus(TaskbarOverlayStatusActive);
 		if (trayIcon && trayIcon->isVisible()) {
 		if (trayIcon && trayIcon->isVisible()) {
 #ifdef __APPLE__
 #ifdef __APPLE__

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

@@ -359,6 +359,7 @@ private:
 	std::string patronJson;
 	std::string patronJson;
 
 
 	std::atomic<obs_scene_t *> currentScene = nullptr;
 	std::atomic<obs_scene_t *> currentScene = nullptr;
+	std::optional<std::pair<uint32_t, uint32_t>> lastOutputResolution;
 
 
 	void UpdateMultiviewProjectorMenu();
 	void UpdateMultiviewProjectorMenu();