Browse Source

frontend: Change renderer combo box to use custom data

While the Metal renderer is displayed as "Metal (Experimental)", the
"Experimental" part doesn't need to be stored to the config. Otherwise,
anyone having selected the Metal renderer will have it get unselected
once the "Experimental" part is removed, and presumably the people who
have it selected while it's experimental would also be the people who
would want it once it's stable.
Sebastian Beckmann 1 month ago
parent
commit
482778d532
3 changed files with 9 additions and 7 deletions
  1. 1 1
      frontend/OBSApp.cpp
  2. 1 0
      frontend/data/locale/en-US.ini
  3. 7 6
      frontend/settings/OBSBasicSettings.cpp

+ 1 - 1
frontend/OBSApp.cpp

@@ -1089,7 +1089,7 @@ const char *OBSApp::GetRenderModule() const
 #elif defined(__APPLE__) && defined(__aarch64__)
 	const char *renderer = config_get_string(appConfig, "Video", "Renderer");
 
-	return (astrcmpi(renderer, "Metal (Experimental)") == 0) ? DL_METAL : DL_OPENGL;
+	return (astrcmpi(renderer, "Metal") == 0) ? DL_METAL : DL_OPENGL;
 #else
 	return DL_OPENGL;
 #endif

+ 1 - 0
frontend/data/locale/en-US.ini

@@ -1211,6 +1211,7 @@ Basic.Settings.Video.FPSFraction="Fractional FPS Value"
 Basic.Settings.Video.Numerator="Numerator"
 Basic.Settings.Video.Denominator="Denominator"
 Basic.Settings.Video.Renderer="Renderer"
+Basic.Settings.Video.Renderer.Experimental="%1 (Experimental)"
 Basic.Settings.Video.InvalidResolution="Invalid resolution value. Must be [width]x[height] (i.e. 1920x1080)"
 Basic.Settings.Video.CurrentlyActive="Video output is currently active. Please turn off any outputs to change video settings."
 

+ 7 - 6
frontend/settings/OBSBasicSettings.cpp

@@ -1396,15 +1396,15 @@ void OBSBasicSettings::LoadRendererList()
 #if defined(_WIN32) || (defined(__APPLE__) && defined(__aarch64__))
 	const char *renderer = config_get_string(App()->GetAppConfig(), "Video", "Renderer");
 #ifdef _WIN32
-	ui->renderer->addItem(QT_UTF8("Direct3D 11"));
+	ui->renderer->addItem(QString("Direct3D 11"), QString("Direct3D 11"));
 	if (opt_allow_opengl || strcmp(renderer, "OpenGL") == 0) {
-		ui->renderer->addItem(QT_UTF8("OpenGL"));
+		ui->renderer->addItem(QString("OpenGL"), QString("OpenGL"));
 	}
 #else
-	ui->renderer->addItem(QT_UTF8("OpenGL"));
-	ui->renderer->addItem(QT_UTF8("Metal (Experimental)"));
+	ui->renderer->addItem(QString("OpenGL"), QString("OpenGL"));
+	ui->renderer->addItem(QTStr("Basic.Settings.Video.Renderer.Experimental").arg("Metal"), QString("Metal"));
 #endif
-	int index = ui->renderer->findText(QT_UTF8(renderer));
+	int index = ui->renderer->findData(QString(renderer));
 	if (index == -1) {
 		index = 0;
 	}
@@ -3146,7 +3146,8 @@ void OBSBasicSettings::SaveAdvancedSettings()
 
 #if defined(_WIN32) || (defined(__APPLE__) && defined(__aarch64__))
 	if (WidgetChanged(ui->renderer)) {
-		config_set_string(App()->GetAppConfig(), "Video", "Renderer", QT_TO_UTF8(ui->renderer->currentText()));
+		config_set_string(App()->GetAppConfig(), "Video", "Renderer",
+				  QT_TO_UTF8(ui->renderer->currentData().toString()));
 	}
 #endif