diff options
Diffstat (limited to 'src/qmlworkerscript/qquickworkerscript.cpp')
| -rw-r--r-- | src/qmlworkerscript/qquickworkerscript.cpp | 27 |
1 files changed, 12 insertions, 15 deletions
diff --git a/src/qmlworkerscript/qquickworkerscript.cpp b/src/qmlworkerscript/qquickworkerscript.cpp index dc19b3a119..219cd4a394 100644 --- a/src/qmlworkerscript/qquickworkerscript.cpp +++ b/src/qmlworkerscript/qquickworkerscript.cpp @@ -112,9 +112,12 @@ public: WorkerDestroyEvent = QEvent::User + 100 }; - QQuickWorkerScriptEnginePrivate(QQmlEngine *eng); + QQuickWorkerScriptEnginePrivate(QQmlTypeLoader *typeLoader) + : m_typeLoader(typeLoader), m_nextId(0) + { + } - QQmlEngine *qmlengine; + QQmlTypeLoader *m_typeLoader = nullptr; QMutex m_lock; QWaitCondition m_wait; @@ -125,7 +128,7 @@ public: // the worker script. QHash<int, QBiPointer<QV4::ExecutionEngine, QQuickWorkerScript>> workers; - int m_nextId; + int m_nextId = 0; static QV4::ReturnedValue method_sendMessage(const QV4::FunctionObject *, const QV4::Value *thisObject, const QV4::Value *argv, int argc); QV4::ExecutionEngine *workerEngine(int id); @@ -142,11 +145,6 @@ private: void reportScriptException(WorkerScript *, const QQmlError &error); }; -QQuickWorkerScriptEnginePrivate::QQuickWorkerScriptEnginePrivate(QQmlEngine *engine) -: qmlengine(engine), m_nextId(0) -{ -} - QV4::ReturnedValue QQuickWorkerScriptEnginePrivate::method_sendMessage(const QV4::FunctionObject *b, const QV4::Value *, const QV4::Value *argv, int argc) { @@ -342,7 +340,8 @@ QQmlError WorkerErrorEvent::error() const } QQuickWorkerScriptEngine::QQuickWorkerScriptEngine(QQmlEngine *parent) -: QThread(parent), d(new QQuickWorkerScriptEnginePrivate(parent)) + : QThread(parent) + , d(new QQuickWorkerScriptEnginePrivate(&QQmlEnginePrivate::get(parent)->typeLoader)) { d->m_lock.lock(); connect(d, SIGNAL(stopThread()), this, SLOT(quit()), Qt::DirectConnection); @@ -390,12 +389,10 @@ WorkerScript::WorkerScript(QV4::ExecutionEngine *engine) #if QT_CONFIG(qml_network) engine->networkAccessManager = [](QV4::ExecutionEngine *engine) { WorkerScript *workerScript = workerScriptExtension(engine); - if (workerScript->scriptLocalNAM) - return workerScript->scriptLocalNAM.get(); - if (auto *namFactory = workerScript->p->qmlengine->networkAccessManagerFactory()) - workerScript->scriptLocalNAM.reset(namFactory->create(workerScript->p)); - else - workerScript->scriptLocalNAM.reset(new QNetworkAccessManager(workerScript->p)); + if (!workerScript->scriptLocalNAM) { + workerScript->scriptLocalNAM.reset( + workerScript->p->m_typeLoader->createNetworkAccessManager(workerScript->p)); + } return workerScript->scriptLocalNAM.get(); }; #endif // qml_network |
