diff --git a/src/qml/qml/ftw/qqmlthread.cpp b/src/qml/qml/ftw/qqmlthread.cpp index 397b4851cfc0a285361b6052d19c51bb299be73e..18b257dc0e6acc292755d2965b7affeb34cf0dbf 100644 --- a/src/qml/qml/ftw/qqmlthread.cpp +++ b/src/qml/qml/ftw/qqmlthread.cpp @@ -207,12 +207,6 @@ void QQmlThreadPrivate::threadEvent() QQmlThread::QQmlThread() : d(new QQmlThreadPrivate(this)) { - d->lock(); - d->start(); - d->wait(); - d->unlock(); - d->moveToThread(d); - } QQmlThread::~QQmlThread() @@ -220,6 +214,15 @@ QQmlThread::~QQmlThread() delete d; } +void QQmlThread::startup() +{ + d->lock(); + d->start(); + d->wait(); + d->unlock(); + d->moveToThread(d); +} + void QQmlThread::shutdown() { d->lock(); diff --git a/src/qml/qml/ftw/qqmlthread_p.h b/src/qml/qml/ftw/qqmlthread_p.h index 995fcd4824bb4b0a66fe97c966dbf788be8e3a92..95d32d4fd25338882e2adc4b7fbad7f9c15126b2 100644 --- a/src/qml/qml/ftw/qqmlthread_p.h +++ b/src/qml/qml/ftw/qqmlthread_p.h @@ -60,6 +60,8 @@ class QQmlThread public: QQmlThread(); virtual ~QQmlThread(); + + void startup(); void shutdown(); bool isShutdown() const; diff --git a/src/qml/qml/qqmltypeloader.cpp b/src/qml/qml/qqmltypeloader.cpp index 0b7cc8e911140bc799fe2b640ef5615331f6b7d4..0e2d4d027a8be7cb00a8b396209791676032223e 100644 --- a/src/qml/qml/qqmltypeloader.cpp +++ b/src/qml/qml/qqmltypeloader.cpp @@ -728,6 +728,8 @@ void QQmlDataBlob::ThreadData::setProgress(quint8 v) QQmlDataLoaderThread::QQmlDataLoaderThread(QQmlDataLoader *loader) : m_loader(loader), m_networkAccessManager(0), m_networkReplyProxy(0) { + // Do that after initializing all the members. + startup(); } QNetworkAccessManager *QQmlDataLoaderThread::networkAccessManager() const