diff options
author | Simon Hausmann <simon.hausmann@digia.com> | 2013-06-04 10:05:51 +0200 |
---|---|---|
committer | Lars Knoll <lars.knoll@digia.com> | 2013-06-04 11:58:10 +0200 |
commit | 19ded50946fa40146914771b1d8eaa22f51da803 (patch) | |
tree | d0e10bdef5f6ec9ffa529eafde7fd3f5f9df4fff /src/qml/qml/v8/qv8qobjectwrapper.cpp | |
parent | 1dbbecda8b4e34196d07ecfea65de87b0bd8b83a (diff) |
Cleanups in QObject bindings
* Rename v8object to jsWrapper in QQmlData
* Rename v8objectid to jsEngineId, as that's the identifier of the engine
that currently owns the primary JS wrapper
This is in preparation for moving newObject away from QV8QObjectWrapper
Change-Id: I6432365e849d159600e22f09e7e2ab2ae2117db6
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Diffstat (limited to 'src/qml/qml/v8/qv8qobjectwrapper.cpp')
-rw-r--r-- | src/qml/qml/v8/qv8qobjectwrapper.cpp | 34 |
1 files changed, 17 insertions, 17 deletions
diff --git a/src/qml/qml/v8/qv8qobjectwrapper.cpp b/src/qml/qml/v8/qv8qobjectwrapper.cpp index 15ae806beb..9c76ba0f2b 100644 --- a/src/qml/qml/v8/qv8qobjectwrapper.cpp +++ b/src/qml/qml/v8/qv8qobjectwrapper.cpp @@ -276,7 +276,7 @@ public: delete this; } - QV4::WeakValue v8object; + QV4::WeakValue jsWrapper; QV8QObjectWrapper *wrapper; }; @@ -341,10 +341,8 @@ private: }; } -static QAtomicInt objectIdCounter(1); - QV8QObjectWrapper::QV8QObjectWrapper() -: m_engine(0), m_id(objectIdCounter.fetchAndAddOrdered(1)) +: m_engine(0) { } @@ -818,17 +816,19 @@ v8::Handle<v8::Value> QV8QObjectWrapper::newQObject(QObject *object) if (!ddata) return QV4::Value::undefinedValue(); - if (ddata->v8objectid == m_id && !ddata->v8object.isEmpty()) { + QV4::ExecutionEngine *v4 = QV8Engine::getV4(m_engine); + + if (ddata->jsEngineId == v4->m_engineId && !ddata->jsWrapper.isEmpty()) { // We own the v8object - return ddata->v8object.value(); - } else if (ddata->v8object.isEmpty() && - (ddata->v8objectid == m_id || // We own the QObject - ddata->v8objectid == 0 || // No one owns the QObject + return ddata->jsWrapper.value(); + } else if (ddata->jsWrapper.isEmpty() && + (ddata->jsEngineId == v4->m_engineId || // We own the QObject + ddata->jsEngineId == 0 || // No one owns the QObject !ddata->hasTaintedV8Object)) { // Someone else has used the QObject, but it isn't tainted v8::Handle<v8::Object> rv = newQObject(object, ddata, m_engine); - ddata->v8object = rv->v4Value(); - ddata->v8objectid = m_id; + ddata->jsWrapper = rv->v4Value(); + ddata->jsEngineId = v4->m_engineId; return rv; } else { @@ -840,10 +840,10 @@ v8::Handle<v8::Value> QV8QObjectWrapper::newQObject(QObject *object) // If our tainted handle doesn't exist or has been collected, and there isn't // a handle in the ddata, we can assume ownership of the ddata->v8object - if ((!found || (*iter)->v8object.isEmpty()) && ddata->v8object.isEmpty()) { + if ((!found || (*iter)->jsWrapper.isEmpty()) && ddata->jsWrapper.isEmpty()) { v8::Handle<v8::Object> rv = newQObject(object, ddata, m_engine); - ddata->v8object = rv->v4Value(); - ddata->v8objectid = m_id; + ddata->jsWrapper = rv->v4Value(); + ddata->jsEngineId = v4->m_engineId; if (found) { delete (*iter); @@ -857,12 +857,12 @@ v8::Handle<v8::Value> QV8QObjectWrapper::newQObject(QObject *object) ddata->hasTaintedV8Object = true; } - if ((*iter)->v8object.isEmpty()) { + if ((*iter)->jsWrapper.isEmpty()) { v8::Handle<v8::Object> rv = newQObject(object, ddata, m_engine); - (*iter)->v8object = rv->v4Value(); + (*iter)->jsWrapper = rv->v4Value(); } - return (*iter)->v8object.value(); + return (*iter)->jsWrapper.value(); } } |