From fdc9c47875b6f583865a5dd6200d089d53774145 Mon Sep 17 00:00:00 2001 From: Richard Stanway Date: Mon, 10 Apr 2017 15:52:53 +0200 Subject: [PATCH] UI: Hide OpenGL and D3D adapter on Windows OpenGL on Windows is rather unstable and can result in graphical corruption or the complete inability to start OBS since some GPUs do not support the minimum requirements after switching to OpenGL. The UI option is now hidden unless --allow-opengl is passed on the command line. The D3D adapter is currently unused and we often find users are concerned when their GPU does not appear in the list. --- UI/obs-app.cpp | 5 +++++ UI/obs-app.hpp | 1 + UI/window-basic-settings.cpp | 16 +++++++++------- 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/UI/obs-app.cpp b/UI/obs-app.cpp index d233d77ba..8c7e73e23 100644 --- a/UI/obs-app.cpp +++ b/UI/obs-app.cpp @@ -69,6 +69,7 @@ bool opt_start_recording = false; bool opt_studio_mode = false; bool opt_start_replaybuffer = false; bool opt_minimize_tray = false; +bool opt_allow_opengl = false; string opt_starting_collection; string opt_starting_profile; string opt_starting_scene; @@ -1783,6 +1784,9 @@ int main(int argc, char *argv[]) } else if (arg_is(argv[i], "--studio-mode", nullptr)) { opt_studio_mode = true; + } else if (arg_is(argv[i], "--allow-opengl", nullptr)) { + opt_allow_opengl = true; + } else if (arg_is(argv[i], "--help", "-h")) { std::cout << "--help, -h: Get list of available commands.\n\n" << @@ -1798,6 +1802,7 @@ int main(int argc, char *argv[]) "--portable, -p: Use portable mode.\n\n" << "--verbose: Make log more verbose.\n" << "--unfiltered_log: Make log unfiltered.\n\n" << + "--allow-opengl: Allow OpenGL on Windows.\n\n" << "--version, -V: Get current version.\n"; exit(0); diff --git a/UI/obs-app.hpp b/UI/obs-app.hpp index 381f9d6b2..318569d5a 100644 --- a/UI/obs-app.hpp +++ b/UI/obs-app.hpp @@ -181,4 +181,5 @@ extern bool opt_start_recording; extern bool opt_start_replaybuffer; extern bool opt_minimize_tray; extern bool opt_studio_mode; +extern bool opt_allow_opengl; extern std::string opt_starting_scene; diff --git a/UI/window-basic-settings.cpp b/UI/window-basic-settings.cpp index 9493b31b7..ebb361abf 100644 --- a/UI/window-basic-settings.cpp +++ b/UI/window-basic-settings.cpp @@ -1041,18 +1041,20 @@ void OBSBasicSettings::LoadRendererList() "Renderer"); ui->renderer->addItem(QT_UTF8("Direct3D 11")); - ui->renderer->addItem(QT_UTF8("OpenGL")); + if (opt_allow_opengl) + ui->renderer->addItem(QT_UTF8("OpenGL")); int idx = ui->renderer->findText(QT_UTF8(renderer)); if (idx == -1) idx = 0; - if (strcmp(renderer, "OpenGL") == 0) { - delete ui->adapter; - delete ui->adapterLabel; - ui->adapter = nullptr; - ui->adapterLabel = nullptr; - } + // the video adapter selection is not currently implemented, hide for now + // to avoid user confusion. was previously protected by + // if (strcmp(renderer, "OpenGL") == 0) + delete ui->adapter; + delete ui->adapterLabel; + ui->adapter = nullptr; + ui->adapterLabel = nullptr; ui->renderer->setCurrentIndex(idx); #endif