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.
This commit is contained in:
Sebastian Beckmann
2025-09-05 20:21:47 +02:00
committed by Ryan Foster
parent 21f2d97af8
commit 482778d532
3 changed files with 9 additions and 7 deletions
+1 -1
View File
@@ -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
View File
@@ -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
View File
@@ -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