aboutsummaryrefslogtreecommitdiff
path: root/base/plugins.cpp
diff options
context:
space:
mode:
authorChris Apers2005-09-04 16:38:38 +0000
committerChris Apers2005-09-04 16:38:38 +0000
commit368785074c9eb9e9cb9f658064a2fcf453f875f5 (patch)
tree5e2653f3bb6e436a085393ebc8250ed573d60d4a /base/plugins.cpp
parent7acd36b443b413d7d36520582a37b1e933d00c35 (diff)
downloadscummvm-rg350-368785074c9eb9e9cb9f658064a2fcf453f875f5.tar.gz
scummvm-rg350-368785074c9eb9e9cb9f658064a2fcf453f875f5.tar.bz2
scummvm-rg350-368785074c9eb9e9cb9f658064a2fcf453f875f5.zip
Prepare PalmOS ARM version : no global initializers with ARM loader o_O
svn-id: r18773
Diffstat (limited to 'base/plugins.cpp')
-rw-r--r--base/plugins.cpp46
1 files changed, 45 insertions, 1 deletions
diff --git a/base/plugins.cpp b/base/plugins.cpp
index a8e6ff63b6..0f1db6d6d7 100644
--- a/base/plugins.cpp
+++ b/base/plugins.cpp
@@ -286,11 +286,24 @@ void PluginManager::loadPlugins() {
}
#else
+
+#ifdef PALMOS_ARM
+ #define FREE_PLUGIN(ID) \
+ extern PluginRegistrator *g_##ID##_PluginReg; \
+ delete g_##ID##_PluginReg;
+
+ #define LINK_PLUGIN(ID) \
+ extern PluginRegistrator *g_##ID##_PluginReg; \
+ extern void g_##ID##_PluginReg_alloc(); \
+ g_##ID##_PluginReg_alloc(); \
+ plugin = g_##ID##_PluginReg; \
+ tryLoadPlugin(new StaticPlugin(plugin->_name, plugin->_games, plugin->_ef, plugin->_df));
+#else
#define LINK_PLUGIN(ID) \
extern PluginRegistrator g_##ID##_PluginReg; \
plugin = &g_##ID##_PluginReg; \
tryLoadPlugin(new StaticPlugin(plugin->_name, plugin->_games, plugin->_ef, plugin->_df));
-
+#endif
// "Loader" for the static plugins.
// Iterate over all registered (static) plugins and load them.
PluginRegistrator *plugin;
@@ -328,6 +341,36 @@ void PluginManager::loadPlugins() {
void PluginManager::unloadPlugins() {
unloadPluginsExcept(NULL);
+
+#ifdef PALMOS_ARM
+ #ifndef DISABLE_SCUMM
+ FREE_PLUGIN(SCUMM)
+ #endif
+ #ifndef DISABLE_SKY
+ FREE_PLUGIN(SKY)
+ #endif
+ #ifndef DISABLE_SWORD1
+ FREE_PLUGIN(SWORD1)
+ #endif
+ #ifndef DISABLE_SWORD2
+ FREE_PLUGIN(SWORD2)
+ #endif
+ #ifndef DISABLE_SIMON
+ FREE_PLUGIN(SIMON)
+ #endif
+ #ifndef DISABLE_QUEEN
+ FREE_PLUGIN(QUEEN)
+ #endif
+ #ifndef DISABLE_SAGA
+ FREE_PLUGIN(SAGA)
+ #endif
+ #ifndef DISABLE_KYRA
+ FREE_PLUGIN(KYRA)
+ #endif
+ #ifndef DISABLE_GOB
+ FREE_PLUGIN(GOB)
+ #endif
+#endif
}
void PluginManager::unloadPluginsExcept(const Plugin *plugin) {
@@ -373,3 +416,4 @@ DetectedGameList PluginManager::detectGames(const FSList &fslist) const {
return candidates;
}
+