Core: Have the JsExpander take ownership of registered QObjects

Change-Id: Ice5f232d5d7bed32b23f6713b7fa44f44a3ea502
Reviewed-by: Eike Ziller <eike.ziller@digia.com>
This commit is contained in:
Tobias Hunger
2014-09-16 16:05:51 +02:00
parent 57cc272770
commit 3088c97254

View File

@@ -44,11 +44,10 @@ namespace Internal {
class JsExpanderPrivate { class JsExpanderPrivate {
public: public:
JsExpanderPrivate() : m_utilsExtension(new UtilsJsExtension) { } ~JsExpanderPrivate() { qDeleteAll(m_registeredObjects); }
~JsExpanderPrivate() { delete m_utilsExtension; }
QScriptEngine m_engine; QScriptEngine m_engine;
UtilsJsExtension *m_utilsExtension; QList<QObject *> m_registeredObjects;
}; };
} // namespace Internal } // namespace Internal
@@ -57,6 +56,7 @@ static Internal::JsExpanderPrivate *d;
void JsExpander::registerQObjectForJs(const QString &name, QObject *obj) void JsExpander::registerQObjectForJs(const QString &name, QObject *obj)
{ {
d->m_registeredObjects.append(obj);
QScriptValue jsObj = d->m_engine.newQObject(obj, QScriptEngine::QtOwnership); QScriptValue jsObj = d->m_engine.newQObject(obj, QScriptEngine::QtOwnership);
d->m_engine.globalObject().setProperty(name, jsObj); d->m_engine.globalObject().setProperty(name, jsObj);
} }
@@ -104,7 +104,7 @@ JsExpander::JsExpander()
} }
}); });
registerQObjectForJs(QLatin1String("Util"), d->m_utilsExtension); registerQObjectForJs(QLatin1String("Util"), new Internal::UtilsJsExtension);
} }
JsExpander::~JsExpander() JsExpander::~JsExpander()