aboutsummaryrefslogtreecommitdiff
path: root/base/main.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'base/main.cpp')
-rw-r--r--base/main.cpp40
1 files changed, 20 insertions, 20 deletions
diff --git a/base/main.cpp b/base/main.cpp
index f529f3ec08..be561f9766 100644
--- a/base/main.cpp
+++ b/base/main.cpp
@@ -128,13 +128,13 @@ static const Plugin *detectPlugin() {
printf("User picked target '%s' (gameid '%s')...\n", ConfMan.getActiveDomainName().c_str(), gameid.c_str());
printf(" Looking for a plugin supporting this gameid... ");
- GameDescriptor game = EngineMan.findGame(gameid, &plugin);
+ PlainGameDescriptor game = EngineMan.findGame(gameid, &plugin);
if (plugin == 0) {
printf("failed\n");
warning("%s is an invalid gameid. Use the --list-games option to list supported gameid", gameid.c_str());
} else {
- printf("%s\n Starting '%s'\n", plugin->getName(), game.description().c_str());
+ printf("%s\n Starting '%s'\n", plugin->getName(), game.description);
}
return plugin;
@@ -193,13 +193,10 @@ static Common::Error runGame(const Plugin *plugin, OSystem &system, const Common
dir.getPath().c_str()
);
- // Autoadded is set only when no path was provided and
- // the game is run from command line.
- //
- // Thus, we remove this garbage entry
- //
- // Fixes bug #1544799
- if (ConfMan.hasKey("autoadded")) {
+ // If a temporary target failed to launch, remove it from the configuration manager
+ // so it not visible in the launcher.
+ // Temporary targets are created when starting games from the command line using the game id.
+ if (ConfMan.hasKey("id_came_from_command_line")) {
ConfMan.removeGameDomain(ConfMan.getActiveDomainName().c_str());
}
@@ -210,10 +207,13 @@ static Common::Error runGame(const Plugin *plugin, OSystem &system, const Common
Common::String caption(ConfMan.get("description"));
if (caption.empty()) {
- caption = EngineMan.findGame(ConfMan.get("gameid")).description();
+ PlainGameDescriptor game = EngineMan.findGame(ConfMan.get("gameid"));
+ if (game.description) {
+ caption = game.description;
+ }
}
if (caption.empty())
- caption = ConfMan.getActiveDomainName(); // Use the domain (=target) name
+ caption = ConfMan.getActiveDomainName(); // Use the domain (=target) name
if (!caption.empty()) {
system.setWindowCaption(caption.c_str());
}
@@ -394,7 +394,7 @@ extern "C" int scummvm_main(int argc, const char * const argv[]) {
if (settings.contains("debuglevel")) {
gDebugLevel = (int)strtol(settings["debuglevel"].c_str(), 0, 10);
printf("Debuglevel (from command line): %d\n", gDebugLevel);
- settings.erase("debuglevel"); // This option should not be passed to ConfMan.
+ settings.erase("debuglevel"); // This option should not be passed to ConfMan.
} else if (ConfMan.hasKey("debuglevel"))
gDebugLevel = ConfMan.getInt("debuglevel");
@@ -535,12 +535,12 @@ extern "C" int scummvm_main(int argc, const char * const argv[]) {
g_eventRec.deinit();
#endif
- #if defined(UNCACHED_PLUGINS) && defined(DYNAMIC_MODULES)
+#if defined(UNCACHED_PLUGINS) && defined(DYNAMIC_MODULES)
// do our best to prevent fragmentation by unloading as soon as we can
PluginManager::instance().unloadPluginsExcept(PLUGIN_TYPE_ENGINE, NULL, false);
// reallocate the config manager to get rid of any fragmentation
ConfMan.defragment();
- #endif
+#endif
// Did an error occur ?
if (result.getCode() != Common::kNoError && result.getCode() != Common::kUserCanceled) {
@@ -549,20 +549,20 @@ extern "C" int scummvm_main(int argc, const char * const argv[]) {
}
// Quit unless an error occurred, or Return to launcher was requested
- #ifndef FORCE_RTL
+#ifndef FORCE_RTL
if (result.getCode() == Common::kNoError && !g_system->getEventManager()->shouldRTL())
break;
- #endif
+#endif
// Reset RTL flag in case we want to load another engine
g_system->getEventManager()->resetRTL();
- #ifdef FORCE_RTL
+#ifdef FORCE_RTL
g_system->getEventManager()->resetQuit();
- #endif
- #ifdef ENABLE_EVENTRECORDER
+#endif
+#ifdef ENABLE_EVENTRECORDER
if (g_eventRec.checkForContinueGame()) {
continue;
}
- #endif
+#endif
// At this point, we usually return to the launcher. However, the
// game may have requested that one or more other games be "chained"