diff options
author | Kent Hansen <kent.hansen@nokia.com> | 2012-03-19 12:29:32 +0100 |
---|---|---|
committer | Kent Hansen <kent.hansen@nokia.com> | 2012-03-19 12:37:03 +0100 |
commit | 4821058f10118be55a541ad39e25ec9165cca3b3 (patch) | |
tree | 167973e3c68fc442b0e37d6f628f3fdbe759f15a /src/qml/qml/v8/qv8qobjectwrapper.cpp | |
parent | 83f11e33745180e9370d484cbcedd0bac020c9dd (diff) | |
parent | 26d5f2e833f0e3686aaa27e695bbfab5fbd808ad (diff) |
Merge master into api_changes
Conflicts:
src/qml/debugger/qqmlenginedebugservice.cpp
src/qml/qml/v8/qv8qobjectwrapper.cpp
src/quick/util/qquickimageprovider.cpp
tests/auto/qml/qqmlecmascript/tst_qqmlecmascript.cpp
Change-Id: Ie78ba2fabd32f4812bcae9dbdd66ed289dc11dcb
Diffstat (limited to 'src/qml/qml/v8/qv8qobjectwrapper.cpp')
-rw-r--r-- | src/qml/qml/v8/qv8qobjectwrapper.cpp | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/src/qml/qml/v8/qv8qobjectwrapper.cpp b/src/qml/qml/v8/qv8qobjectwrapper.cpp index 61cfa242c9..2350b9dc2c 100644 --- a/src/qml/qml/v8/qv8qobjectwrapper.cpp +++ b/src/qml/qml/v8/qv8qobjectwrapper.cpp @@ -599,11 +599,10 @@ static inline void StoreProperty(QV8Engine *engine, QObject *object, QQmlPropert v8::StackTrace::kScriptName)); v8::Local<v8::StackFrame> frame = trace->GetFrame(0); int lineNumber = frame->GetLineNumber(); - int columNumber = frame->GetColumn(); + int columnNumber = frame->GetColumn(); QString url = engine->toString(frame->GetScriptName()); - newBinding = new QQmlBinding(&function, object, context); - newBinding->setSourceLocation(url, lineNumber, columNumber); + newBinding = new QQmlBinding(&function, object, context, url, lineNumber, columnNumber); newBinding->setTarget(object, *property, context); newBinding->setEvaluateFlags(newBinding->evaluateFlags() | QQmlBinding::RequiresThisObject); @@ -619,11 +618,10 @@ static inline void StoreProperty(QV8Engine *engine, QObject *object, QQmlPropert v8::StackTrace::kScriptName)); v8::Local<v8::StackFrame> frame = trace->GetFrame(0); int lineNumber = frame->GetLineNumber(); - int columNumber = frame->GetColumn(); + int columnNumber = frame->GetColumn(); QString url = engine->toString(frame->GetScriptName()); - newBinding = new QQmlBinding(&function, object, context); - newBinding->setSourceLocation(url, lineNumber, columNumber); + newBinding = new QQmlBinding(&function, object, context, url, lineNumber, columnNumber); newBinding->setTarget(object, *property, context); newBinding->setEvaluateFlags(newBinding->evaluateFlags() | QQmlBinding::RequiresThisObject); @@ -925,8 +923,10 @@ static void WeakQObjectReferenceCallback(v8::Persistent<v8::Value> handle, void QQmlData *ddata = QQmlData::get(object, false); if (ddata) { ddata->v8object.Clear(); - if (!object->parent() && !ddata->indestructible) + if (!object->parent() && !ddata->indestructible) { + ddata->isQueuedForDeletion = true; object->deleteLater(); + } } } @@ -1084,13 +1084,16 @@ v8::Handle<v8::Value> QV8QObjectWrapper::newQObject(QObject *object) return v8::Null(); if (QObjectPrivate::get(object)->wasDeleted) - return v8::Undefined(); - + return v8::Null(); + QQmlData *ddata = QQmlData::get(object, true); if (!ddata) return v8::Undefined(); + if (ddata->isQueuedForDeletion) + return v8::Null(); + if (ddata->v8objectid == m_id && !ddata->v8object.IsEmpty()) { // We own the v8object return v8::Local<v8::Object>::New(ddata->v8object); |