From 026479d30a33c3a85eec4f6b1db54fe9e48b84fe Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Sat, 22 Oct 2022 18:16:09 +0200 Subject: [PATCH] GUI: Allow game gfx override to specify no shader. --- gui/options.cpp | 35 +++++++++++++++-------------------- 1 file changed, 15 insertions(+), 20 deletions(-) diff --git a/gui/options.cpp b/gui/options.cpp index 9d6b4b20c34..fda3ab280e5 100644 --- a/gui/options.cpp +++ b/gui/options.cpp @@ -425,7 +425,7 @@ void OptionsDialog::build() { if (ConfMan.isKeyTemporary("shader")) { _shader->setFontColor(ThemeEngine::FontColor::kFontColorOverride); } - if (shader.empty() || !ConfMan.hasKey("shader", _domain)) { + if (shader.empty() || shader == "default" || !ConfMan.hasKey("shader", _domain)) { _shader->setLabel(_c("None", "shader")); _shaderClearButton->setEnabled(false); } else { @@ -710,26 +710,17 @@ void OptionsDialog::apply() { // Shader options if (_shader) { - bool isSet; - if (ConfMan.hasKey("shader", _domain) && !ConfMan.get("shader", _domain).empty()) previousShader = ConfMan.get("shader", _domain); Common::U32String shader(_shader->getLabel()); - if (shader.empty() || (shader == _c("None", "shader"))) - isSet = false; - else - isSet = true; - if (isSet) { - if (!ConfMan.hasKey("shader", _domain) || shader != ConfMan.get("shader", _domain)) - graphicsModeChanged = true; - ConfMan.set("shader", shader.encode(), _domain); - } else { - if (ConfMan.hasKey("shader", _domain) && !ConfMan.get("shader", _domain).empty()) - graphicsModeChanged = true; - ConfMan.removeKey("shader", _domain); - } + if (shader == _c("None", "shader")) + shader = "default"; + + if (!ConfMan.hasKey("shader", _domain) || shader != ConfMan.get("shader", _domain)) + graphicsModeChanged = true; + ConfMan.set("shader", shader.encode(), _domain); _shader->setFontColor(ThemeEngine::FontColor::kFontColorNormal); } @@ -812,12 +803,14 @@ void OptionsDialog::apply() { } if (gfxError & OSystem::kTransactionShaderChangeFailed) { + if (previousShader == _c("None", "shader")) + previousShader = "default"; + + ConfMan.set("shader", previousShader.encode(), _domain); if (previousShader.empty()) { - ConfMan.removeKey("shader", _domain); _shader->setLabel(_c("None", "shader")); _shaderClearButton->setEnabled(false); } else { - ConfMan.set("shader", previousShader.encode(), _domain); _shader->setLabel(previousShader); _shaderClearButton->setEnabled(true); } @@ -838,12 +831,14 @@ void OptionsDialog::apply() { // If shader was changed, show the test dialog if (previousShader != shader && !shader.empty()) { if (!testGraphicsSettings()) { + if (previousShader == _c("None", "shader")) + previousShader = "default"; + + ConfMan.set("shader", previousShader.encode(), _domain); if (previousShader.empty()) { - ConfMan.removeKey("shader", _domain); _shader->setLabel(_c("None", "shader")); _shaderClearButton->setEnabled(false); } else { - ConfMan.set("shader", previousShader.encode(), _domain); _shader->setLabel(previousShader); _shaderClearButton->setEnabled(true); }