ソースを参照

UI: Only apply new scaling behavior on newer installs

The new scaling behavior affects defaults, so only apply it to new
installs of 26.2 or greater, while maintaining the previous behavior if
the user is upgrading from an older version.
jp9000 5 年 前
コミット
4e5f20dcbe
2 ファイル変更22 行追加4 行削除
  1. 12 0
      UI/obs-app.cpp
  2. 10 4
      UI/window-basic-main.cpp

+ 12 - 0
UI/obs-app.cpp

@@ -777,6 +777,18 @@ bool OBSApp::InitGlobalConfig()
 	}
 #undef PRE_24_1_DEFS
 
+#define PRE_26_2_DEFS "Pre26.2Defaults"
+	if (!config_has_user_value(globalConfig, "General", PRE_26_2_DEFS)) {
+		bool useOldDefaults = lastVersion &&
+				      lastVersion <
+					      MAKE_SEMANTIC_VERSION(26, 2, 0);
+
+		config_set_bool(globalConfig, "General", PRE_26_2_DEFS,
+				useOldDefaults);
+		changed = true;
+	}
+#undef PRE_26_2_DEFS
+
 	if (config_has_user_value(globalConfig, "BasicWindow",
 				  "MultiviewLayout")) {
 		const char *layout = config_get_string(

+ 10 - 4
UI/window-basic-main.cpp

@@ -1218,13 +1218,19 @@ bool OBSBasic::InitBasicConfigDefaults()
 	uint32_t cx = primaryScreen->size().width();
 	uint32_t cy = primaryScreen->size().height();
 
+	bool oldScaleBehavior = config_get_bool(App()->GlobalConfig(),
+						"General", "Pre26.2Defaults");
+
+	/* after version 26.2, apply scaling to cx/cy */
+	if (!oldScaleBehavior) {
 #ifdef SUPPORTS_FRACTIONAL_SCALING
-	cx *= devicePixelRatioF();
-	cy *= devicePixelRatioF();
+		cx *= devicePixelRatioF();
+		cy *= devicePixelRatioF();
 #elif
-	cx *= devicePixelRatio();
-	cy *= devicePixelRatio();
+		cx *= devicePixelRatio();
+		cy *= devicePixelRatio();
 #endif
+	}
 
 	bool oldResolutionDefaults = config_get_bool(
 		App()->GlobalConfig(), "General", "Pre19Defaults");