diff options
Diffstat (limited to 'base/main.cpp')
-rw-r--r-- | base/main.cpp | 52 |
1 files changed, 50 insertions, 2 deletions
diff --git a/base/main.cpp b/base/main.cpp index ff441df49c..c52888a827 100644 --- a/base/main.cpp +++ b/base/main.cpp @@ -51,6 +51,7 @@ #include "common/textconsole.h" #include "common/tokenizer.h" #include "common/translation.h" +#include "common/osd_message_queue.h" #include "gui/gui-manager.h" #include "gui/error.h" @@ -66,6 +67,15 @@ #endif #include "backends/keymapper/keymapper.h" +#ifdef USE_CLOUD +#ifdef USE_LIBCURL +#include "backends/cloud/cloudmanager.h" +#include "backends/networking/curl/connectionmanager.h" +#endif +#ifdef USE_SDL_NET +#include "backends/networking/sdl_net/localwebserver.h" +#endif +#endif #if defined(_WIN32_WCE) #include "backends/platform/wince/CELauncherDialog.h" @@ -75,6 +85,9 @@ #include "gui/launcher.h" #endif +#ifdef USE_UPDATES +#include "gui/updates-dialog.h" +#endif static bool launcherDialog() { @@ -148,8 +161,11 @@ static Common::Error runGame(const EnginePlugin *plugin, OSystem &system, const #endif // Verify that the game path refers to an actual directory - if (!(dir.exists() && dir.isDirectory())) + if (!dir.exists()) { + err = Common::kPathDoesNotExist; + } else if (!dir.isDirectory()) { err = Common::kPathNotDirectory; + } // Create the game engine if (err.getCode() == Common::kNoError) { @@ -277,6 +293,8 @@ static void setupGraphics(OSystem &system) { system.setFeatureState(OSystem::kFeatureAspectRatioCorrection, ConfMan.getBool("aspect_ratio")); if (ConfMan.hasKey("fullscreen")) system.setFeatureState(OSystem::kFeatureFullscreenMode, ConfMan.getBool("fullscreen")); + if (ConfMan.hasKey("filtering")) + system.setFeatureState(OSystem::kFeatureFilteringMode, ConfMan.getBool("filtering")); system.endGFXTransaction(); // When starting up launcher for the first time, the user might have specified @@ -382,7 +400,12 @@ extern "C" int scummvm_main(int argc, const char * const argv[]) { if (settings.contains("debugflags")) { specialDebug = settings["debugflags"]; settings.erase("debugflags"); - } + } else if (ConfMan.hasKey("debugflags")) + specialDebug = ConfMan.get("debugflags"); + + if (settings.contains("debug-channels-only")) + gDebugChannelsOnly = true; + PluginManager::instance().init(); PluginManager::instance().loadAllPlugins(); // load plugins for cached plugin manager @@ -455,9 +478,23 @@ extern "C" int scummvm_main(int argc, const char * const argv[]) { g_eventRec.RegisterEventSource(); #endif + Common::OSDMessageQueue::instance().registerEventSource(); + // Now as the event manager is created, setup the keymapper setupKeymapper(system); +#ifdef USE_UPDATES + if (!ConfMan.hasKey("updates_check")) { + GUI::UpdatesDialog dlg; + dlg.runModal(); + } +#endif + +#if defined(USE_CLOUD) && defined(USE_LIBCURL) + CloudMan.init(); + CloudMan.syncSaves(); +#endif + // Unless a game was specified, show the launcher dialog if (0 == ConfMan.getActiveDomain()) launcherDialog(); @@ -566,11 +603,22 @@ extern "C" int scummvm_main(int argc, const char * const argv[]) { launcherDialog(); } } +#ifdef USE_CLOUD +#ifdef USE_SDL_NET + Networking::LocalWebserver::destroy(); +#endif +#ifdef USE_LIBCURL + Networking::ConnectionManager::destroy(); + //I think it's important to destroy it after ConnectionManager + Cloud::CloudManager::destroy(); +#endif +#endif PluginManager::instance().unloadAllPlugins(); PluginManager::destroy(); GUI::GuiManager::destroy(); Common::ConfigManager::destroy(); Common::DebugManager::destroy(); + Common::OSDMessageQueue::destroy(); #ifdef ENABLE_EVENTRECORDER GUI::EventRecorder::destroy(); #endif |