[Scummvm-cvs-logs] CVS: scummvm/base main.cpp,1.47,1.48 plugins.cpp,1.34,1.35 plugins.h,1.21,1.22
Marcus Comstedt
marcus_c at users.sourceforge.net
Sun Aug 29 12:09:07 CEST 2004
Update of /cvsroot/scummvm/scummvm/base
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv17118
Modified Files:
main.cpp plugins.cpp plugins.h
Log Message:
Provide unloading of unneeded plugins.
Index: main.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/base/main.cpp,v
retrieving revision 1.47
retrieving revision 1.48
diff -u -d -r1.47 -r1.48
--- main.cpp 26 Aug 2004 21:51:18 -0000 1.47
+++ main.cpp 29 Aug 2004 19:08:08 -0000 1.48
@@ -381,8 +381,14 @@
//while(1) {
// Verify the given game name is a valid supported game
if (detector.detectMain()) {
+ // Unload all plugins not needed for this game,
+ // to save memory
+ PluginManager::instance().unloadPluginsExcept(detector._plugin);
+
runGame(detector, system);
+ // PluginManager::instance().unloadPlugins();
+ // PluginManager::instance().loadPlugins();
// launcherDialog(detector, system);
}
//}
Index: plugins.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/base/plugins.cpp,v
retrieving revision 1.34
retrieving revision 1.35
diff -u -d -r1.34 -r1.35
--- plugins.cpp 22 Aug 2004 21:41:22 -0000 1.34
+++ plugins.cpp 29 Aug 2004 19:08:08 -0000 1.35
@@ -265,12 +265,24 @@
}
void PluginManager::unloadPlugins() {
+ unloadPluginsExcept(NULL);
+}
+
+void PluginManager::unloadPluginsExcept(const Plugin *plugin) {
+ Plugin *found = NULL;
uint i;
for (i = 0; i < _plugins.size(); i++) {
- _plugins[i]->unloadPlugin();
- delete _plugins[i];
+ if (_plugins[i] == plugin) {
+ found = _plugins[i];
+ } else {
+ _plugins[i]->unloadPlugin();
+ delete _plugins[i];
+ }
}
_plugins.clear();
+ if (found != NULL) {
+ _plugins.push_back(found);
+ }
}
bool PluginManager::tryLoadPlugin(Plugin *plugin) {
Index: plugins.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/base/plugins.h,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -d -r1.21 -r1.22
--- plugins.h 9 May 2004 13:12:18 -0000 1.21
+++ plugins.h 29 Aug 2004 19:08:08 -0000 1.22
@@ -123,6 +123,7 @@
void loadPlugins();
void unloadPlugins();
+ void unloadPluginsExcept(const Plugin *plugin);
const PluginList &getPlugins() { return _plugins; }
More information about the Scummvm-git-logs
mailing list