diff options
| author | Marcus Comstedt | 2004-08-22 21:41:22 +0000 | 
|---|---|---|
| committer | Marcus Comstedt | 2004-08-22 21:41:22 +0000 | 
| commit | ba39d7a3dbe8cfce4293838e87c1ff6caa1a27d6 (patch) | |
| tree | fc2d731ed976cec667597f18f5e91097f7ceaec8 | |
| parent | c8d0270510ea09c9080759e1cbd353ba07391ac6 (diff) | |
| download | scummvm-rg350-ba39d7a3dbe8cfce4293838e87c1ff6caa1a27d6.tar.gz scummvm-rg350-ba39d7a3dbe8cfce4293838e87c1ff6caa1a27d6.tar.bz2 scummvm-rg350-ba39d7a3dbe8cfce4293838e87c1ff6caa1a27d6.zip  | |
Support dynamic plugins on Dreamcast.
svn-id: r14688
| -rw-r--r-- | base/plugins.cpp | 14 | 
1 files changed, 12 insertions, 2 deletions
diff --git a/base/plugins.cpp b/base/plugins.cpp index c096d1813a..cab71bf20a 100644 --- a/base/plugins.cpp +++ b/base/plugins.cpp @@ -39,9 +39,15 @@ typedef DetectedGameList (*DetectFunc)(const FSList &fslist);  #ifdef UNIX  #include <dlfcn.h> +#define DYNAMIC_PLUGIN_PATH(name) (name "/lib" name ".so") +#else +#ifdef __DC__ +#include "dcloader.h" +#define DYNAMIC_PLUGIN_PATH(name) (name ".plg")  #else  #error No support for loading plugins on non-unix systems at this point!  #endif +#endif  #endif @@ -123,7 +129,7 @@ public:  };  void *DynamicPlugin::findSymbol(const char *symbol) { -#ifdef UNIX +#if defined(UNIX)||defined(__DC__)  	void *func = dlsym(_dlHandle, symbol);  	if (!func)  		warning("Failed loading symbol '%s' from plugin '%s' (%s)", symbol, _filename.c_str(), dlerror()); @@ -172,6 +178,10 @@ bool DynamicPlugin::loadPlugin() {  		return false;  	} +#ifdef __DC__ +	dlforgetsyms(_dlHandle); +#endif +  	return true;  } @@ -211,7 +221,7 @@ void PluginManager::loadPlugins() {  	// the "ABI" version the plugin was built for, and we can compare that  	// to the ABI version of the executable.  	#define LOAD_MODULE(name, NAME) \ -		tryLoadPlugin(new DynamicPlugin(name "/lib" name ".so")); +		tryLoadPlugin(new DynamicPlugin(DYNAMIC_PLUGIN_PATH(name)));  #else  	// "Loader" for the static plugins  	#define LOAD_MODULE(name, NAME) \  | 
