diff options
Diffstat (limited to 'src/plugins')
5 files changed, 22 insertions, 24 deletions
diff --git a/src/plugins/qmltooling/qmldbg_debugger/qqmlenginedebugservice.cpp b/src/plugins/qmltooling/qmldbg_debugger/qqmlenginedebugservice.cpp index d435e82390..1aa24ea3a4 100644 --- a/src/plugins/qmltooling/qmldbg_debugger/qqmlenginedebugservice.cpp +++ b/src/plugins/qmltooling/qmldbg_debugger/qqmlenginedebugservice.cpp @@ -389,7 +389,7 @@ void QQmlEngineDebugServiceImpl::buildObjectList(QDataStream &message, if (!ctxt->isValid()) return; - QQmlContextData *p = QQmlContextData::get(ctxt); + QQmlRefPointer<QQmlContextData> p = QQmlContextData::get(ctxt); QString ctxtName = ctxt->objectName(); int ctxtId = QQmlDebugService::idForObject(ctxt); @@ -400,31 +400,31 @@ void QQmlEngineDebugServiceImpl::buildObjectList(QDataStream &message, int count = 0; - QQmlContextData *child = p->childContexts; + QQmlRefPointer<QQmlContextData> child = p->childContexts(); while (child) { ++count; - child = child->nextChild; + child = child->nextChild(); } message << count; - child = p->childContexts; + child = p->childContexts(); while (child) { buildObjectList(message, child->asQQmlContext(), instances); - child = child->nextChild; + child = child->nextChild(); } count = 0; for (int ii = 0; ii < instances.count(); ++ii) { QQmlData *data = QQmlData::get(instances.at(ii)); - if (data->context == p) + if (data->context == p.data()) count ++; } message << count; for (int ii = 0; ii < instances.count(); ++ii) { QQmlData *data = QQmlData::get(instances.at(ii)); - if (data->context == p) + if (data->context == p.data()) message << objectData(instances.at(ii)); } } @@ -522,16 +522,11 @@ void QQmlEngineDebugServiceImpl::processMessage(const QByteArray &message) if (engine) { QQmlContext *rootContext = engine->rootContext(); - // Clean deleted objects QQmlContextPrivate *ctxtPriv = QQmlContextPrivate::get(rootContext); - for (int ii = 0; ii < ctxtPriv->instances.count(); ++ii) { - if (!ctxtPriv->instances.at(ii)) { - ctxtPriv->instances.removeAt(ii); - --ii; - } - } - buildObjectList(rs, rootContext, ctxtPriv->instances); - buildStatesList(true, ctxtPriv->instances); + ctxtPriv->cleanInstances(); // Clean deleted objects + const QList<QPointer<QObject>> instances = ctxtPriv->instances(); + buildObjectList(rs, rootContext, instances); + buildStatesList(true, instances); } } else if (type == "FETCH_OBJECT") { @@ -783,7 +778,7 @@ bool QQmlEngineDebugServiceImpl::setMethodBody(int objectId, const QString &meth QQmlContext *context = qmlContext(object); if (!object || !context || !context->isValid()) return false; - QQmlContextData *contextData = QQmlContextData::get(context); + QQmlRefPointer<QQmlContextData> contextData = QQmlContextData::get(context); QQmlPropertyData dummy; QQmlPropertyData *prop = diff --git a/src/plugins/qmltooling/qmldbg_debugger/qv4debugjob.cpp b/src/plugins/qmltooling/qmldbg_debugger/qv4debugjob.cpp index 333ce4b26f..a70941682b 100644 --- a/src/plugins/qmltooling/qmldbg_debugger/qv4debugjob.cpp +++ b/src/plugins/qmltooling/qmldbg_debugger/qv4debugjob.cpp @@ -88,10 +88,10 @@ void JavaScriptJob::run() QV4::ScopedObject withContext(scope, engine->newObject()); QV4::ScopedString k(scope); QV4::ScopedValue v(scope); - for (int ii = 0; ii < ctxtPriv->instances.count(); ++ii) { - QObject *object = ctxtPriv->instances.at(ii); - if (QQmlContext *context = qmlContext(object)) { - if (QQmlContextData *cdata = QQmlContextData::get(context)) { + const QList<QPointer<QObject>> instances = ctxtPriv->instances(); + for (const QPointer<QObject> &object : instances) { + if (QQmlContext *context = qmlContext(object.data())) { + if (QQmlRefPointer<QQmlContextData> cdata = QQmlContextData::get(context)) { v = QV4::QObjectWrapper::wrap(engine, object); k = engine->newString(cdata->findObjectId(object)); withContext->put(k, v); diff --git a/src/plugins/qmltooling/qmldbg_inspector/globalinspector.cpp b/src/plugins/qmltooling/qmldbg_inspector/globalinspector.cpp index 012730902b..301db59952 100644 --- a/src/plugins/qmltooling/qmldbg_inspector/globalinspector.cpp +++ b/src/plugins/qmltooling/qmldbg_inspector/globalinspector.cpp @@ -298,7 +298,7 @@ QString GlobalInspector::idStringForObject(QObject *obj) const { QQmlContext *context = qmlContext(obj); if (context) { - QQmlContextData *cdata = QQmlContextData::get(context); + QQmlRefPointer<QQmlContextData> cdata = QQmlContextData::get(context); if (cdata) return cdata->findObjectId(obj); } diff --git a/src/plugins/qmltooling/qmldbg_preview/qqmldebugtranslationservice.cpp b/src/plugins/qmltooling/qmldbg_preview/qqmldebugtranslationservice.cpp index 1561777202..5da26e9610 100644 --- a/src/plugins/qmltooling/qmldbg_preview/qqmldebugtranslationservice.cpp +++ b/src/plugins/qmltooling/qmldbg_preview/qqmldebugtranslationservice.cpp @@ -58,7 +58,9 @@ QString QQmlDebugTranslationServiceImpl::foundElidedText(QObject *textObject, co return elideText; } -void QQmlDebugTranslationServiceImpl::foundTranslationBinding(QQmlTranslationBinding *binding, QObject *scopeObject, QQmlContextData *contextData) +void QQmlDebugTranslationServiceImpl::foundTranslationBinding( + QQmlTranslationBinding *binding, QObject *scopeObject, + const QQmlRefPointer<QQmlContextData> &contextData) { Q_UNUSED(binding) Q_UNUSED(scopeObject) diff --git a/src/plugins/qmltooling/qmldbg_preview/qqmldebugtranslationservice.h b/src/plugins/qmltooling/qmldbg_preview/qqmldebugtranslationservice.h index a337a937a5..802f21ecce 100644 --- a/src/plugins/qmltooling/qmldbg_preview/qqmldebugtranslationservice.h +++ b/src/plugins/qmltooling/qmldbg_preview/qqmldebugtranslationservice.h @@ -78,7 +78,8 @@ public: QQmlDebugTranslationServiceImpl(QObject *parent = 0); QString foundElidedText(QObject *textObject, const QString &layoutText, const QString &elideText) override; - void foundTranslationBinding(QQmlTranslationBinding *binding, QObject *scopeObject, QQmlContextData *contextData) override; + void foundTranslationBinding(QQmlTranslationBinding *binding, QObject *scopeObject, + const QQmlRefPointer<QQmlContextData> &contextData) override; void messageReceived(const QByteArray &message) override; }; |