aboutsummaryrefslogtreecommitdiff
path: root/backends/plugins
diff options
context:
space:
mode:
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;
}