qmlRegisterType<QObject>("", 1, 0, "QObject");
}
+BluemonkeySink::~BluemonkeySink()
+{
+ Q_FOREACH(void* module, modules)
+ {
+ dlclose(module);
+ }
+}
+
PropertyList BluemonkeySink::subscriptions()
{
return false;
}
+ if(modules.contains(handle))
+ return false;
+
+ modules.push_back(handle);
+
void* c = dlsym(handle, "create");
if(!c)
for(auto i : exports)
{
- QJSValue val = engine->newQObject(i.second);
- engine->globalObject().setProperty(i.first.c_str(), val);
+ std::string obj = i.first;
+ if(!engine->globalObject().hasProperty(obj.c_str()))
+ {
+ QJSValue val = engine->newQObject(i.second);
+ engine->globalObject().setProperty(obj.c_str(), val);
+ }
}
return true;
using QObject::setProperty;
BluemonkeySink(AbstractRoutingEngine* e, map<string, string> config, AbstractSource& parent);
+ ~BluemonkeySink();
virtual PropertyList subscriptions();
virtual void supportedChanged(const PropertyList & supportedProperties);
virtual void propertyChanged(AbstractPropertyType* value);
void createCustomProperty(QString name, QJSValue defaultValue, int zone);
private:
+ QList<void*> modules;
QJSEngine* engine;
QStringList configsToLoad;