mirror of
https://github.com/overte-org/overte.git
synced 2025-04-21 04:03:59 +02:00
Add proper cleanup of AssetRequest in AssetResourceRequest
This commit is contained in:
parent
b8c1c279c6
commit
e87fcb78cd
2 changed files with 20 additions and 6 deletions
|
@ -12,9 +12,14 @@
|
|||
#include "AssetResourceRequest.h"
|
||||
|
||||
#include "AssetClient.h"
|
||||
#include "AssetRequest.h"
|
||||
#include "AssetUtils.h"
|
||||
|
||||
AssetResourceRequest::~AssetResourceRequest() {
|
||||
if (_assetRequest) {
|
||||
_assetRequest->deleteLater();
|
||||
}
|
||||
}
|
||||
|
||||
void AssetResourceRequest::doSend() {
|
||||
// Make request to atp
|
||||
auto assetClient = DependencyManager::get<AssetClient>();
|
||||
|
@ -31,9 +36,9 @@ void AssetResourceRequest::doSend() {
|
|||
return;
|
||||
}
|
||||
|
||||
auto request = assetClient->createRequest(hash, extension);
|
||||
_assetRequest = assetClient->createRequest(hash, extension);
|
||||
|
||||
if (!request) {
|
||||
if (!_assetRequest) {
|
||||
_result = ServerUnavailable;
|
||||
_state = Finished;
|
||||
|
||||
|
@ -42,9 +47,10 @@ void AssetResourceRequest::doSend() {
|
|||
return;
|
||||
}
|
||||
|
||||
connect(request, &AssetRequest::progress, this, &AssetResourceRequest::progress);
|
||||
QObject::connect(request, &AssetRequest::finished, [this](AssetRequest* req) mutable {
|
||||
connect(_assetRequest, &AssetRequest::progress, this, &AssetResourceRequest::progress);
|
||||
QObject::connect(_assetRequest, &AssetRequest::finished, [this](AssetRequest* req) mutable {
|
||||
Q_ASSERT(_state == InProgress);
|
||||
Q_ASSERT(req == _assetRequest);
|
||||
Q_ASSERT(req->getState() == AssetRequest::FINISHED);
|
||||
|
||||
switch (req->getError()) {
|
||||
|
@ -65,9 +71,12 @@ void AssetResourceRequest::doSend() {
|
|||
|
||||
_state = Finished;
|
||||
emit finished();
|
||||
|
||||
_assetRequest->deleteLater();
|
||||
_assetRequest = nullptr;
|
||||
});
|
||||
|
||||
request->start();
|
||||
_assetRequest->start();
|
||||
}
|
||||
|
||||
void AssetResourceRequest::onDownloadProgress(qint64 bytesReceived, qint64 bytesTotal) {
|
||||
|
|
|
@ -14,18 +14,23 @@
|
|||
|
||||
#include <QUrl>
|
||||
|
||||
#include "AssetRequest.h"
|
||||
#include "ResourceRequest.h"
|
||||
|
||||
class AssetResourceRequest : public ResourceRequest {
|
||||
Q_OBJECT
|
||||
public:
|
||||
AssetResourceRequest(QObject* parent, const QUrl& url) : ResourceRequest(parent, url) { }
|
||||
~AssetResourceRequest();
|
||||
|
||||
protected:
|
||||
virtual void doSend() override;
|
||||
|
||||
private slots:
|
||||
void onDownloadProgress(qint64 bytesReceived, qint64 bytesTotal);
|
||||
|
||||
private:
|
||||
AssetRequest* _assetRequest;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Reference in a new issue