From: Alan Alpert Date: Mon, 6 Jun 2011 05:19:50 +0000 (+1000) Subject: Merge branch 'master' into qtquick2 X-Git-Tag: qt-v5.0.0-alpha1~2170^2~28 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=6e22ead1767d0ef9463b34bee071ca54647a547c;p=profile%2Fivi%2Fqtdeclarative.git Merge branch 'master' into qtquick2 Conflicts: src/declarative/graphicsitems/qdeclarativetextinput.cpp src/declarative/qml/qdeclarativeengine.cpp --- 6e22ead1767d0ef9463b34bee071ca54647a547c diff --cc src/declarative/qml/qdeclarativeengine.cpp index 073e1d4,8c8e7a2..80845b4 --- a/src/declarative/qml/qdeclarativeengine.cpp +++ b/src/declarative/qml/qdeclarativeengine.cpp @@@ -656,23 -647,9 +658,24 @@@ QDeclarativeEngine::QDeclarativeEngine( QDeclarativeEngine::~QDeclarativeEngine() { Q_D(QDeclarativeEngine); - if (d->isDebugging) + if (d->isDebugging) { QDeclarativeEngineDebugServer::instance()->remEngine(this); - QJSDebugService::instance()->removeEngine(this); ++ } + + // if we are the parent of any of the qobject module api instances, + // we need to remove them from our internal list, in order to prevent + // a segfault in engine private dtor. + QList keys = d->moduleApiInstances.keys(); + QObject *currQObjectApi = 0; + QDeclarativeMetaType::ModuleApiInstance *currInstance = 0; + foreach (const QDeclarativeMetaType::ModuleApi &key, keys) { + currInstance = d->moduleApiInstances.value(key); + currQObjectApi = currInstance->qobjectApi; + if (this->children().contains(currQObjectApi)) { + delete currQObjectApi; + delete currInstance; + d->moduleApiInstances.remove(key); + } } } diff --cc src/declarative/qml/qdeclarativeengine_p.h index fadedf4,fd851f7..58a852b --- a/src/declarative/qml/qdeclarativeengine_p.h +++ b/src/declarative/qml/qdeclarativeengine_p.h @@@ -94,11 -93,8 +94,10 @@@ class QDeclarativeExpression class QDeclarativeContextScriptClass; class QDeclarativeImportDatabase; class QDeclarativeObjectScriptClass; +class QDeclarativeScarceResourceScriptClass; +class ScarceResourceData; class QDeclarativeTypeNameScriptClass; class QDeclarativeValueTypeScriptClass; - class QScriptEngineDebugger; class QNetworkReply; class QNetworkAccessManager; class QDeclarativeNetworkAccessManagerFactory;