From 368785074c9eb9e9cb9f658064a2fcf453f875f5 Mon Sep 17 00:00:00 2001 From: Chris Apers Date: Sun, 4 Sep 2005 16:38:38 +0000 Subject: Prepare PalmOS ARM version : no global initializers with ARM loader o_O svn-id: r18773 --- base/plugins.cpp | 46 +++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 45 insertions(+), 1 deletion(-) (limited to 'base/plugins.cpp') diff --git a/base/plugins.cpp b/base/plugins.cpp index a8e6ff63b6..0f1db6d6d7 100644 --- a/base/plugins.cpp +++ b/base/plugins.cpp @@ -285,12 +285,25 @@ 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; } + -- cgit v1.2.3