diff options
-rw-r--r-- | base/commandLine.cpp | 13 | ||||
-rw-r--r-- | base/main.cpp | 19 |
2 files changed, 19 insertions, 13 deletions
diff --git a/base/commandLine.cpp b/base/commandLine.cpp index b1610feb2e..36218376c8 100644 --- a/base/commandLine.cpp +++ b/base/commandLine.cpp @@ -383,19 +383,6 @@ Common::String parseCommandLine(Common::StringMap &settings, int argc, const cha END_OPTION DO_OPTION('g', "gfx-mode") - // Check whether 'option' specifies a valid graphics mode. - bool isValid = false; - if (!scumm_stricmp(option, "normal") || !scumm_stricmp(option, "default")) - isValid = true; - if (!isValid) { - const OSystem::GraphicsMode *gm = g_system->getSupportedGraphicsModes(); - while (gm->name && !isValid) { - isValid = !scumm_stricmp(gm->name, option); - gm++; - } - } - if (!isValid) - usage("Unrecognized graphics mode '%s'", option); END_OPTION DO_OPTION_INT('m', "music-volume") diff --git a/base/main.cpp b/base/main.cpp index 2958dea283..c6fffe5ce3 100644 --- a/base/main.cpp +++ b/base/main.cpp @@ -372,6 +372,25 @@ extern "C" int scummvm_main(int argc, const char * const argv[]) { // the command line params) was read. system.initBackend(); + // If we received an invalid graphics mode parameter via command line + // we check this here. We can't do it until after the backend is inited, + // or there won't be a graphics manager to ask for the supported modes. + + if (settings.contains("gfx-mode")) { + const OSystem::GraphicsMode *gm = g_system->getSupportedGraphicsModes(); + Common::String option = settings["gfx-mode"]; + bool isValid = false; + + while (gm->name && !isValid) { + isValid = !scumm_stricmp(gm->name, option.c_str()); + gm++; + } + if (!isValid) { + warning("Unrecognized graphics mode '%s'. Switching to default mode", option.c_str()); + settings["gfx-mode"] = "default"; + } + } + setupGraphics(system); // Init the different managers that are used by the engines. |