diff options
author | Charles Yin <charles.yin@nokia.com> | 2012-05-08 10:42:28 +1000 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-05-09 00:56:16 +0200 |
commit | 68b899266ca209d43026376a6cf9d7bbdc3483b8 (patch) | |
tree | 0a0d2068c5dcafc2d86883405025db33e00b2373 /src/qml/qml/v8/qv8qobjectwrapper.cpp | |
parent | 08bafae3a1c148353e3f37f9966b9ecc28ba3a5f (diff) |
Better checking top level root object creation status
Add QQmlContextData::isRootObjectInCreation flag, only set it to true in Init qml instruction,
once a root ojbect created, set it to false and set QQmlData::rootObjectInCreation to true.
Change-Id: Iba7b348ab664a472280d8d7283e93787b3dd0a56
Reviewed-by: Chris Adams <christopher.adams@nokia.com>
Diffstat (limited to 'src/qml/qml/v8/qv8qobjectwrapper.cpp')
-rw-r--r-- | src/qml/qml/v8/qv8qobjectwrapper.cpp | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/qml/qml/v8/qv8qobjectwrapper.cpp b/src/qml/qml/v8/qv8qobjectwrapper.cpp index dabd09c2a9..fde7f66abc 100644 --- a/src/qml/qml/v8/qv8qobjectwrapper.cpp +++ b/src/qml/qml/v8/qv8qobjectwrapper.cpp @@ -1148,7 +1148,7 @@ void QV8QObjectWrapper::deleteWeakQObject(QV8QObjectResource *resource) if (object) { QQmlData *ddata = QQmlData::get(object, false); if (ddata) { - if (ddata->inCreation) { + if (ddata->rootObjectInCreation) { ddata->v8object.MakeWeak(0, WeakQObjectReferenceCallback); return; } @@ -1891,7 +1891,7 @@ static v8::Handle<v8::Value> ToString(QV8Engine *engine, QObject *object, int, v static v8::Handle<v8::Value> Destroy(QV8Engine *, QObject *object, int argCount, v8::Handle<v8::Object> args) { QQmlData *ddata = QQmlData::get(object, false); - if (!ddata || ddata->indestructible || ddata->inCreation) { + if (!ddata || ddata->indestructible || ddata->rootObjectInCreation) { const char *error = "Invalid attempt to destroy() an indestructible object"; v8::ThrowException(v8::Exception::Error(v8::String::New(error))); return v8::Undefined(); |