[Scummvm-cvs-logs] CVS: scummvm/base plugins.cpp,1.48,1.49 plugins.h,1.29,1.30

Chris Apers chrilith at users.sourceforge.net
Sun Sep 4 09:39:27 CEST 2005


Update of /cvsroot/scummvm/scummvm/base
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv7109

Modified Files:
	plugins.cpp plugins.h 
Log Message:
Prepare PalmOS ARM version : no global initializers with ARM loader o_O

Index: plugins.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/base/plugins.cpp,v
retrieving revision 1.48
retrieving revision 1.49
diff -u -d -r1.48 -r1.49
--- plugins.cpp	28 Aug 2005 12:19:36 -0000	1.48
+++ plugins.cpp	4 Sep 2005 16:38:38 -0000	1.49
@@ -286,11 +286,24 @@
 	}
 
 #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::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 @@
 
 	return candidates;
 }
+

Index: plugins.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/base/plugins.h,v
retrieving revision 1.29
retrieving revision 1.30
diff -u -d -r1.29 -r1.30
--- plugins.h	30 Jul 2005 21:10:57 -0000	1.29
+++ plugins.h	4 Sep 2005 16:38:38 -0000	1.30
@@ -86,6 +86,15 @@
  * @todo	add some means to query the plugin API version etc.
  * @todo	on Windows, we might need __declspec(dllexport) ?
  */
+
+#ifdef PALMOS_ARM
+#define REGISTER_PLUGIN(ID,name) \
+	PluginRegistrator *g_##ID##_PluginReg; \
+	void g_##ID##_PluginReg_alloc() { \
+		g_##ID##_PluginReg = new PluginRegistrator(name, Engine_##ID##_gameList(), Engine_##ID##_create, Engine_##ID##_detectGames);\
+	}
+#else
+
 #ifndef DYNAMIC_MODULES
 #define REGISTER_PLUGIN(ID,name) \
 	PluginRegistrator g_##ID##_PluginReg(name, Engine_##ID##_gameList(), Engine_##ID##_create, Engine_##ID##_detectGames);
@@ -98,6 +107,7 @@
 		PLUGIN_EXPORT DetectedGameList PLUGIN_detectGames(const FSList &fslist) { return Engine_##ID##_detectGames(fslist); } \
 	}
 #endif
+#endif
 
 #ifndef DYNAMIC_MODULES
 /**
@@ -156,3 +166,4 @@
 };
 
 #endif
+





More information about the Scummvm-git-logs mailing list