|
@@ -608,11 +608,24 @@ OBSBasicSettings::OBSBasicSettings(QWidget *parent)
|
|
|
for (ProcessPriority pri : processPriorities)
|
|
|
ui->processPriority->addItem(QTStr(pri.name), pri.val);
|
|
|
|
|
|
+#else
|
|
|
+#if defined(__APPLE__) && defined(__aarch64__)
|
|
|
+ delete ui->adapterLabel;
|
|
|
+ delete ui->adapter;
|
|
|
+
|
|
|
+ ui->adapterLabel = nullptr;
|
|
|
+ ui->adapter = nullptr;
|
|
|
#else
|
|
|
delete ui->rendererLabel;
|
|
|
delete ui->renderer;
|
|
|
delete ui->adapterLabel;
|
|
|
delete ui->adapter;
|
|
|
+
|
|
|
+ ui->rendererLabel = nullptr;
|
|
|
+ ui->renderer = nullptr;
|
|
|
+ ui->adapterLabel = nullptr;
|
|
|
+ ui->adapter = nullptr;
|
|
|
+#endif
|
|
|
delete ui->processPriorityLabel;
|
|
|
delete ui->processPriority;
|
|
|
delete ui->enableNewSocketLoop;
|
|
@@ -624,10 +637,6 @@ OBSBasicSettings::OBSBasicSettings(QWidget *parent)
|
|
|
#endif
|
|
|
delete ui->disableAudioDucking;
|
|
|
|
|
|
- ui->rendererLabel = nullptr;
|
|
|
- ui->renderer = nullptr;
|
|
|
- ui->adapterLabel = nullptr;
|
|
|
- ui->adapter = nullptr;
|
|
|
ui->processPriorityLabel = nullptr;
|
|
|
ui->processPriority = nullptr;
|
|
|
ui->enableNewSocketLoop = nullptr;
|
|
@@ -1384,16 +1393,21 @@ void OBSBasicSettings::LoadGeneralSettings()
|
|
|
|
|
|
void OBSBasicSettings::LoadRendererList()
|
|
|
{
|
|
|
-#ifdef _WIN32
|
|
|
+#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"));
|
|
|
- if (opt_allow_opengl || strcmp(renderer, "OpenGL") == 0)
|
|
|
+ if (opt_allow_opengl || strcmp(renderer, "OpenGL") == 0) {
|
|
|
ui->renderer->addItem(QT_UTF8("OpenGL"));
|
|
|
-
|
|
|
- int idx = ui->renderer->findText(QT_UTF8(renderer));
|
|
|
- if (idx == -1)
|
|
|
- idx = 0;
|
|
|
+ }
|
|
|
+#else
|
|
|
+ ui->renderer->addItem(QT_UTF8("OpenGL"));
|
|
|
+ ui->renderer->addItem(QT_UTF8("Metal (Experimental)"));
|
|
|
+#endif
|
|
|
+ int index = ui->renderer->findText(QT_UTF8(renderer));
|
|
|
+ if (index == -1) {
|
|
|
+ index = 0;
|
|
|
+ }
|
|
|
|
|
|
// the video adapter selection is not currently implemented, hide for now
|
|
|
// to avoid user confusion. was previously protected by
|
|
@@ -1403,7 +1417,7 @@ void OBSBasicSettings::LoadRendererList()
|
|
|
ui->adapter = nullptr;
|
|
|
ui->adapterLabel = nullptr;
|
|
|
|
|
|
- ui->renderer->setCurrentIndex(idx);
|
|
|
+ ui->renderer->setCurrentIndex(index);
|
|
|
#endif
|
|
|
}
|
|
|
|
|
@@ -3130,10 +3144,13 @@ void OBSBasicSettings::SaveAdvancedSettings()
|
|
|
{
|
|
|
QString lastMonitoringDevice = config_get_string(main->Config(), "Audio", "MonitoringDeviceId");
|
|
|
|
|
|
-#ifdef _WIN32
|
|
|
- if (WidgetChanged(ui->renderer))
|
|
|
+#if defined(_WIN32) || (defined(__APPLE__) && defined(__aarch64__))
|
|
|
+ if (WidgetChanged(ui->renderer)) {
|
|
|
config_set_string(App()->GetAppConfig(), "Video", "Renderer", QT_TO_UTF8(ui->renderer->currentText()));
|
|
|
+ }
|
|
|
+#endif
|
|
|
|
|
|
+#ifdef _WIN32
|
|
|
std::string priority = QT_TO_UTF8(ui->processPriority->currentData().toString());
|
|
|
config_set_string(App()->GetAppConfig(), "General", "ProcessPriority", priority.c_str());
|
|
|
if (main->Active())
|