From b0e83c32ffa52421498350cc9455c122285e50af Mon Sep 17 00:00:00 2001 From: Atlante45 Date: Thu, 3 Jul 2014 18:17:01 -0700 Subject: [PATCH] Hopeful fix to ACs crash --- assignment-client/src/Agent.cpp | 6 ++---- libraries/networking/src/NetworkAccessManager.cpp | 4 ++-- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/assignment-client/src/Agent.cpp b/assignment-client/src/Agent.cpp index 4a3346fc83..637bdca67f 100644 --- a/assignment-client/src/Agent.cpp +++ b/assignment-client/src/Agent.cpp @@ -211,13 +211,10 @@ void Agent::run() { NetworkAccessManager& networkAccessManager = NetworkAccessManager::getInstance(); QNetworkReply *reply = networkAccessManager.get(QNetworkRequest(scriptURL)); - // Make sure cache on same thread than its parent (NetworkAccessManager) QNetworkDiskCache* cache = new QNetworkDiskCache(); - cache->moveToThread(networkAccessManager.thread()); - cache->setParent(&networkAccessManager); - QString cachePath = QStandardPaths::writableLocation(QStandardPaths::DataLocation); cache->setCacheDirectory(!cachePath.isEmpty() ? cachePath : "agentCache"); + cache->moveToThread(networkAccessManager.thread()); networkAccessManager.setCache(cache); qDebug() << "Downloading script at" << scriptURL.toString(); @@ -273,4 +270,5 @@ void Agent::run() { void Agent::aboutToFinish() { _scriptEngine.stop(); + NetworkAccessManager::getInstance().clearAccessCache(); } diff --git a/libraries/networking/src/NetworkAccessManager.cpp b/libraries/networking/src/NetworkAccessManager.cpp index c2b4bfcd11..7e5ba3f66e 100644 --- a/libraries/networking/src/NetworkAccessManager.cpp +++ b/libraries/networking/src/NetworkAccessManager.cpp @@ -21,6 +21,7 @@ NetworkAccessManager& NetworkAccessManager::getInstance() { } NetworkAccessManager::NetworkAccessManager() { + qRegisterMetaType(); } QNetworkReply* NetworkAccessManager::get(const QNetworkRequest& request) { @@ -151,10 +152,9 @@ QNetworkReply* NetworkAccessManager::sendCustomRequest(const QNetworkRequest& re void NetworkAccessManager::setCache(QAbstractNetworkCache* cache) { if (QThread::currentThread() != thread()) { - qRegisterMetaType(); QMetaObject::invokeMethod(this, "setCache", - Qt::QueuedConnection, + Qt::BlockingQueuedConnection, Q_ARG(QAbstractNetworkCache*, cache)); } QNetworkAccessManager::setCache(cache);