diff --git a/libraries/animation/src/AnimNodeLoader.cpp b/libraries/animation/src/AnimNodeLoader.cpp index f5d9215253..df39c55e5d 100644 --- a/libraries/animation/src/AnimNodeLoader.cpp +++ b/libraries/animation/src/AnimNodeLoader.cpp @@ -570,19 +570,11 @@ bool processStateMachineNode(AnimNode::Pointer node, const QJsonObject& jsonObj, AnimNodeLoader::AnimNodeLoader(const QUrl& url) : _url(url) { - auto request = ResourceManager::createResourceRequest(this, url); - if (request) { - connect(request, &ResourceRequest::finished, this, [this, request]() { - if (request->getResult() == ResourceRequest::Success) { - onRequestDone(request->getData()); - } else { - onRequestError(request->getResult()); - } - request->deleteLater(); - }); - - request->send(); - } + _resource = QSharedPointer::create(url); + _resource->setSelf(_resource); + connect(_resource.data(), &Resource::loaded, this, &AnimNodeLoader::onRequestDone); + connect(_resource.data(), &Resource::failed, this, &AnimNodeLoader::onRequestError); + _resource->ensureLoading(); } AnimNode::Pointer AnimNodeLoader::load(const QByteArray& contents, const QUrl& jsonUrl) { @@ -629,6 +621,6 @@ void AnimNodeLoader::onRequestDone(const QByteArray data) { } } -void AnimNodeLoader::onRequestError(ResourceRequest::Result netError) { +void AnimNodeLoader::onRequestError(QNetworkReply::NetworkError netError) { emit error((int)netError, "Resource download error"); } diff --git a/libraries/animation/src/AnimNodeLoader.h b/libraries/animation/src/AnimNodeLoader.h index edb4729753..6db001c261 100644 --- a/libraries/animation/src/AnimNodeLoader.h +++ b/libraries/animation/src/AnimNodeLoader.h @@ -13,13 +13,13 @@ #include +#include #include #include #include "AnimNode.h" -#include - +class Resource; class AnimNodeLoader : public QObject { Q_OBJECT @@ -37,11 +37,12 @@ protected: protected slots: void onRequestDone(const QByteArray data); - void onRequestError(ResourceRequest::Result error); + void onRequestError(QNetworkReply::NetworkError error); protected: QUrl _url; - + QSharedPointer _resource; + private: // no copies diff --git a/libraries/networking/src/ResourceCache.cpp b/libraries/networking/src/ResourceCache.cpp index 6c74da749c..2f90f36670 100644 --- a/libraries/networking/src/ResourceCache.cpp +++ b/libraries/networking/src/ResourceCache.cpp @@ -218,7 +218,6 @@ QList> ResourceCacheSharedItems::getPendingRequests() { result.append(resource); } } - _pendingRequests.removeAll(QWeakPointer()); } return result; } @@ -238,7 +237,6 @@ QList> ResourceCacheSharedItems::getLoadingRequests() { result.append(resource); } } - _loadingRequests.removeAll(QWeakPointer()); } return result; }