[Scummvm-cvs-logs] SF.net SVN: scummvm:[51673] scummvm/branches/gsoc2010-plugins/base

toneman1138 at users.sourceforge.net toneman1138 at users.sourceforge.net
Tue Aug 3 03:10:37 CEST 2010


Revision: 51673
          http://scummvm.svn.sourceforge.net/scummvm/?rev=51673&view=rev
Author:   toneman1138
Date:     2010-08-03 01:10:36 +0000 (Tue, 03 Aug 2010)

Log Message:
-----------
gave plugin iterators more appropriate names, removed debugging printf, added comments to loadFirstPlugin and loadNextPlugin

Modified Paths:
--------------
    scummvm/branches/gsoc2010-plugins/base/plugins.cpp
    scummvm/branches/gsoc2010-plugins/base/plugins.h

Modified: scummvm/branches/gsoc2010-plugins/base/plugins.cpp
===================================================================
--- scummvm/branches/gsoc2010-plugins/base/plugins.cpp	2010-08-03 00:03:04 UTC (rev 51672)
+++ scummvm/branches/gsoc2010-plugins/base/plugins.cpp	2010-08-03 01:10:36 UTC (rev 51673)
@@ -317,17 +317,18 @@
 			plugs.push_back(*p);
 		}
 	}
-	_allPlugsEnd = plugs.end();
-	_allPlugs = plugs.begin();
+	_pluginsEnd = plugs.end();
+	_currentPlugin = plugs.begin();
 	if (plugs.empty()) return false; //return false if there are no plugins to load.
-	return tryLoadPlugin(*_allPlugs);
+	return tryLoadPlugin(*_currentPlugin);
 }
 
 bool PluginManager::loadNextPlugin() {
+	// To ensure only one engine plugin is loaded at a time, we unload all engine plugins before loading a new one.
 	unloadPluginsExcept(PLUGIN_TYPE_ENGINE, NULL);
-	++_allPlugs;
-	if (_allPlugs == _allPlugsEnd) return false; //return false if already reached the end of list of plugins.
-	return tryLoadPlugin(*_allPlugs); 
+	++_currentPlugin;
+	if (_currentPlugin == _pluginsEnd) return false; //return false if already reached the end of list of plugins.
+	return tryLoadPlugin(*_currentPlugin); 
 }
 
 void PluginManager::loadPlugins() {
@@ -367,6 +368,7 @@
 		// The plugin is valid, see if it provides the same module as an
 		// already loaded one and should replace it.
 		bool found = false;
+		printf("Plugin loaded is %s\n", plugin->getName());
 		PluginList::iterator pl = _plugins[plugin->getType()].begin();
 		while (!found && pl != _plugins[plugin->getType()].end()) {
 			if (!strcmp(plugin->getName(), (*pl)->getName())) {
@@ -429,22 +431,20 @@
 GameList EngineManager::detectGames(const Common::FSList &fslist) const {
 	GameList candidates;
 	EnginePlugin::List plugins;
+	EnginePlugin::List::const_iterator iter;
 #ifdef NEW_PLUGIN_DESIGN_FIRST_REFINEMENT
 	PluginManager::instance().loadFirstPlugin();
 	do {
 #endif
-		printf("SUCCESS!!!\n");
 		plugins = getPlugins();
 		// Iterate over all known games and for each check if it might be
 		// the game in the presented directory.
-		EnginePlugin::List::const_iterator iter;
 		for (iter = plugins.begin(); iter != plugins.end(); ++iter) {
 			candidates.push_back((**iter)->detectGames(fslist));
 		}
 #ifdef NEW_PLUGIN_DESIGN_FIRST_REFINEMENT
 	} while (PluginManager::instance().loadNextPlugin());
 #endif
-
 	return candidates;
 }
 

Modified: scummvm/branches/gsoc2010-plugins/base/plugins.h
===================================================================
--- scummvm/branches/gsoc2010-plugins/base/plugins.h	2010-08-03 00:03:04 UTC (rev 51672)
+++ scummvm/branches/gsoc2010-plugins/base/plugins.h	2010-08-03 01:10:36 UTC (rev 51673)
@@ -275,10 +275,9 @@
 private:
 	PluginList _plugins[PLUGIN_TYPE_MAX];
 	ProviderList _providers;
-	PluginList::iterator _allPlugs;
-	PluginList::iterator _allPlugsEnd;
+	PluginList::iterator _currentPlugin;
+	PluginList::iterator _pluginsEnd;
 	
-	
 	bool tryLoadPlugin(Plugin *plugin);
 	
 	friend class Common::Singleton<SingletonBaseType>;
@@ -291,6 +290,7 @@
 
 	bool loadFirstPlugin();
 	bool loadNextPlugin();
+	
 	void loadPlugins();
 	void unloadPlugins();
 	void unloadPluginsExcept(PluginType type, const Plugin *plugin);


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list