Hopeful fix to ACs crash

This commit is contained in:
Atlante45 2014-07-03 18:17:01 -07:00
parent bc3823f1f7
commit b0e83c32ff
2 changed files with 4 additions and 6 deletions

View file

@ -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();
}

View file

@ -21,6 +21,7 @@ NetworkAccessManager& NetworkAccessManager::getInstance() {
}
NetworkAccessManager::NetworkAccessManager() {
qRegisterMetaType<QAbstractNetworkCache*>();
}
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<QAbstractNetworkCache*>();
QMetaObject::invokeMethod(this,
"setCache",
Qt::QueuedConnection,
Qt::BlockingQueuedConnection,
Q_ARG(QAbstractNetworkCache*, cache));
}
QNetworkAccessManager::setCache(cache);