aboutsummaryrefslogtreecommitdiff
path: root/backends/plugins
diff options
context:
space:
mode:
authorJordi Vilalta Prat2008-02-08 00:02:23 +0000
committerJordi Vilalta Prat2008-02-08 00:02:23 +0000
commitc103290e2b123510e9d9eb4716ae0336a9e61ede (patch)
tree5e13c4cd5a990094696b819b852ebbfb7afd89c9 /backends/plugins
parent49d0b1f91e32eda3956c0c1d8c0156ebd5854c66 (diff)
downloadscummvm-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.h15
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;
}