aboutsummaryrefslogtreecommitdiff
path: root/base
diff options
context:
space:
mode:
authorTony Puccinelli2010-08-05 00:26:46 +0000
committerTony Puccinelli2010-08-05 00:26:46 +0000
commit66b42d486b052fccd8f70ed0cbbee7c113463f61 (patch)
tree555710e092492df6a0556b29b74c2e31b64d0bcc /base
parent520c0a40098a9687f4d85343267cda9c5b5c971b (diff)
downloadscummvm-rg350-66b42d486b052fccd8f70ed0cbbee7c113463f61.tar.gz
scummvm-rg350-66b42d486b052fccd8f70ed0cbbee7c113463f61.tar.bz2
scummvm-rg350-66b42d486b052fccd8f70ed0cbbee7c113463f61.zip
added intermediary function 'findGameOnePlugAtATime' and switched load game and run game code to use it. Added checks for DYNAMIC_MODULES defines to the checks for NEW_PLUGIN_DESIGN_FIRST_REFINEMENT
svn-id: r51746
Diffstat (limited to 'base')
-rw-r--r--base/main.cpp8
-rw-r--r--base/plugins.cpp24
2 files changed, 21 insertions, 11 deletions
diff --git a/base/main.cpp b/base/main.cpp
index e3eb18b79d..8067bd0a26 100644
--- a/base/main.cpp
+++ b/base/main.cpp
@@ -103,8 +103,12 @@ static const EnginePlugin *detectPlugin() {
// Query the plugins and find one that will handle the specified gameid
printf("User picked target '%s' (gameid '%s')...\n", ConfMan.getActiveDomainName().c_str(), gameid.c_str());
printf(" Looking for a plugin supporting this gameid... ");
-
+
+#if defined(NEW_PLUGIN_DESIGN_FIRST_REFINEMENT) && defined(DYNAMIC_MODULES)
+ GameDescriptor game = EngineMan.findGameOnePlugAtATime(gameid, &plugin);
+#else
GameDescriptor game = EngineMan.findGame(gameid, &plugin);
+#endif
if (plugin == 0) {
printf("failed\n");
@@ -336,7 +340,7 @@ extern "C" int scummvm_main(int argc, const char * const argv[]) {
settings.erase("debugflags");
}
-#ifdef NEW_PLUGIN_DESIGN_FIRST_REFINEMENT //note: I'm going to refactor this name later :P
+#if defined(NEW_PLUGIN_DESIGN_FIRST_REFINEMENT) && defined(DYNAMIC_MODULES) //note: I'm going to refactor this name later :P
// Don't load the plugins initially in this case.
#else
// Load the plugins.
diff --git a/base/plugins.cpp b/base/plugins.cpp
index cbf45cc709..54eeaf8c60 100644
--- a/base/plugins.cpp
+++ b/base/plugins.cpp
@@ -400,6 +400,18 @@ bool PluginManager::tryLoadPlugin(Plugin *plugin) {
DECLARE_SINGLETON(EngineManager)
+GameDescriptor EngineManager::findGameOnePlugAtATime(const Common::String &gameName, const EnginePlugin **plugin) const {
+ GameDescriptor result;
+ PluginManager::instance().loadFirstPlugin();
+ do {
+ result = findGame(gameName, plugin);
+ if (!result.gameid().empty()) {
+ break;
+ }
+ } while (PluginManager::instance().loadNextPlugin());
+ return result;
+}
+
GameDescriptor EngineManager::findGame(const Common::String &gameName, const EnginePlugin **plugin) const {
// Find the GameDescriptor for this target
const EnginePlugin::List &plugins = getPlugins();
@@ -410,10 +422,6 @@ GameDescriptor EngineManager::findGame(const Common::String &gameName, const Eng
EnginePlugin::List::const_iterator iter;
-#ifdef NEW_PLUGIN_DESIGN_FIRST_REFINEMENT
- PluginManager::instance().loadFirstPlugin();
- do {
-#endif
for (iter = plugins.begin(); iter != plugins.end(); ++iter) {
result = (**iter)->findGame(gameName.c_str());
if (!result.gameid().empty()) {
@@ -422,9 +430,6 @@ GameDescriptor EngineManager::findGame(const Common::String &gameName, const Eng
return result;
}
}
-#ifdef NEW_PLUGIN_DESIGN_FIRST_REFINEMENT
- } while(PluginManager::instance().loadNextPlugin());
-#endif
return result;
}
@@ -432,7 +437,8 @@ GameList EngineManager::detectGames(const Common::FSList &fslist) const {
GameList candidates;
EnginePlugin::List plugins;
EnginePlugin::List::const_iterator iter;
-#ifdef NEW_PLUGIN_DESIGN_FIRST_REFINEMENT
+#if defined(NEW_PLUGIN_DESIGN_FIRST_REFINEMENT) && defined(DYNAMIC_MODULES)
+ PluginManager::instance().unloadPlugins();
PluginManager::instance().loadFirstPlugin();
do {
#endif
@@ -442,7 +448,7 @@ GameList EngineManager::detectGames(const Common::FSList &fslist) const {
for (iter = plugins.begin(); iter != plugins.end(); ++iter) {
candidates.push_back((**iter)->detectGames(fslist));
}
-#ifdef NEW_PLUGIN_DESIGN_FIRST_REFINEMENT
+#if defined(NEW_PLUGIN_DESIGN_FIRST_REFINEMENT) && defined(DYNAMIC_MODULES)
} while (PluginManager::instance().loadNextPlugin());
#endif
return candidates;