diff options
author | Jordi Vilalta Prat | 2008-02-08 00:02:23 +0000 |
---|---|---|
committer | Jordi Vilalta Prat | 2008-02-08 00:02:23 +0000 |
commit | c103290e2b123510e9d9eb4716ae0336a9e61ede (patch) | |
tree | 5e13c4cd5a990094696b819b852ebbfb7afd89c9 /backends/plugins | |
parent | 49d0b1f91e32eda3956c0c1d8c0156ebd5854c66 (diff) | |
download | scummvm-rg350-c103290e2b123510e9d9eb4716ae0336a9e61ede.tar.gz scummvm-rg350-c103290e2b123510e9d9eb4716ae0336a9e61ede.tar.bz2 scummvm-rg350-c103290e2b123510e9d9eb4716ae0336a9e61ede.zip |
Initial support for plugin types
svn-id: r30825
Diffstat (limited to 'backends/plugins')
-rw-r--r-- | backends/plugins/dynamic-plugin.h | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/backends/plugins/dynamic-plugin.h b/backends/plugins/dynamic-plugin.h index 67d0b138c6..4b46c31ace 100644 --- a/backends/plugins/dynamic-plugin.h +++ b/backends/plugins/dynamic-plugin.h @@ -31,6 +31,7 @@ class DynamicPlugin : public Plugin { protected: + typedef int32 (*IntFunc)(); typedef void (*VoidFunc)(); typedef PluginObject *(*GetObjectFunc)(); @@ -38,6 +39,18 @@ protected: public: virtual bool loadPlugin() { + // Get the type of the plugin + IntFunc typeFunc = (IntFunc)findSymbol("PLUGIN_getType"); + if (!typeFunc) { + unloadPlugin(); + return false; + } + _type = (PluginType)typeFunc(); + if (_type >= PLUGIN_TYPE_MAX) { + unloadPlugin(); + return false; + } + // Get the plugin's instantiator object GetObjectFunc getObject = (GetObjectFunc)findSymbol("PLUGIN_getObject"); if (!getObject) { @@ -54,7 +67,7 @@ public: return true; } - + virtual void unloadPlugin() { delete _pluginObject; } |