mirror of
https://github.com/JulianGro/overte.git
synced 2025-04-26 00:15:19 +02:00
Merge pull request #8778 from Atlante45/asset-client
Fix crash in AssetClient handleProgressCallback
This commit is contained in:
commit
33e426bfd2
4 changed files with 14 additions and 15 deletions
|
@ -141,7 +141,11 @@ bool haveAssetServer() {
|
||||||
}
|
}
|
||||||
|
|
||||||
GetMappingRequest* AssetClient::createGetMappingRequest(const AssetPath& path) {
|
GetMappingRequest* AssetClient::createGetMappingRequest(const AssetPath& path) {
|
||||||
return new GetMappingRequest(path);
|
auto request = new GetMappingRequest(path);
|
||||||
|
|
||||||
|
request->moveToThread(thread());
|
||||||
|
|
||||||
|
return request;
|
||||||
}
|
}
|
||||||
|
|
||||||
GetAllMappingsRequest* AssetClient::createGetAllMappingsRequest() {
|
GetAllMappingsRequest* AssetClient::createGetAllMappingsRequest() {
|
||||||
|
@ -305,7 +309,7 @@ void AssetClient::handleAssetGetInfoReply(QSharedPointer<ReceivedMessage> messag
|
||||||
void AssetClient::handleAssetGetReply(QSharedPointer<ReceivedMessage> message, SharedNodePointer senderNode) {
|
void AssetClient::handleAssetGetReply(QSharedPointer<ReceivedMessage> message, SharedNodePointer senderNode) {
|
||||||
Q_ASSERT(QThread::currentThread() == thread());
|
Q_ASSERT(QThread::currentThread() == thread());
|
||||||
|
|
||||||
auto assetHash = message->read(SHA256_HASH_LENGTH);
|
auto assetHash = message->readHead(SHA256_HASH_LENGTH);
|
||||||
qCDebug(asset_client) << "Got reply for asset: " << assetHash.toHex();
|
qCDebug(asset_client) << "Got reply for asset: " << assetHash.toHex();
|
||||||
|
|
||||||
MessageID messageID;
|
MessageID messageID;
|
||||||
|
@ -349,8 +353,8 @@ void AssetClient::handleAssetGetReply(QSharedPointer<ReceivedMessage> message, S
|
||||||
} else {
|
} else {
|
||||||
auto weakNode = senderNode.toWeakRef();
|
auto weakNode = senderNode.toWeakRef();
|
||||||
|
|
||||||
connect(message.data(), &ReceivedMessage::progress, this, [this, weakNode, messageID, length]() {
|
connect(message.data(), &ReceivedMessage::progress, this, [this, weakNode, messageID, length](qint64 size) {
|
||||||
handleProgressCallback(weakNode, messageID, length);
|
handleProgressCallback(weakNode, messageID, size, length);
|
||||||
});
|
});
|
||||||
connect(message.data(), &ReceivedMessage::completed, this, [this, weakNode, messageID]() {
|
connect(message.data(), &ReceivedMessage::completed, this, [this, weakNode, messageID]() {
|
||||||
handleCompleteCallback(weakNode, messageID);
|
handleCompleteCallback(weakNode, messageID);
|
||||||
|
@ -358,7 +362,8 @@ void AssetClient::handleAssetGetReply(QSharedPointer<ReceivedMessage> message, S
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void AssetClient::handleProgressCallback(const QWeakPointer<Node>& node, MessageID messageID, DataOffset length) {
|
void AssetClient::handleProgressCallback(const QWeakPointer<Node>& node, MessageID messageID,
|
||||||
|
qint64 size, DataOffset length) {
|
||||||
auto senderNode = node.toStrongRef();
|
auto senderNode = node.toStrongRef();
|
||||||
|
|
||||||
if (!senderNode) {
|
if (!senderNode) {
|
||||||
|
@ -381,13 +386,7 @@ void AssetClient::handleProgressCallback(const QWeakPointer<Node>& node, Message
|
||||||
}
|
}
|
||||||
|
|
||||||
auto& callbacks = requestIt->second;
|
auto& callbacks = requestIt->second;
|
||||||
auto& message = callbacks.message;
|
callbacks.progressCallback(size, length);
|
||||||
|
|
||||||
if (!message) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
callbacks.progressCallback(message->getSize(), length);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void AssetClient::handleCompleteCallback(const QWeakPointer<Node>& node, MessageID messageID) {
|
void AssetClient::handleCompleteCallback(const QWeakPointer<Node>& node, MessageID messageID) {
|
||||||
|
|
|
@ -93,7 +93,7 @@ private:
|
||||||
bool cancelGetAssetRequest(MessageID id);
|
bool cancelGetAssetRequest(MessageID id);
|
||||||
bool cancelUploadAssetRequest(MessageID id);
|
bool cancelUploadAssetRequest(MessageID id);
|
||||||
|
|
||||||
void handleProgressCallback(const QWeakPointer<Node>& node, MessageID messageID, DataOffset length);
|
void handleProgressCallback(const QWeakPointer<Node>& node, MessageID messageID, qint64 size, DataOffset length);
|
||||||
void handleCompleteCallback(const QWeakPointer<Node>& node, MessageID messageID);
|
void handleCompleteCallback(const QWeakPointer<Node>& node, MessageID messageID);
|
||||||
|
|
||||||
struct GetAssetRequestData {
|
struct GetAssetRequestData {
|
||||||
|
|
|
@ -61,7 +61,7 @@ void ReceivedMessage::appendPacket(NLPacket& packet) {
|
||||||
_data.append(packet.getPayload(), packet.getPayloadSize());
|
_data.append(packet.getPayload(), packet.getPayloadSize());
|
||||||
|
|
||||||
if (_numPackets % EMIT_PROGRESS_EVERY_X_PACKETS == 0) {
|
if (_numPackets % EMIT_PROGRESS_EVERY_X_PACKETS == 0) {
|
||||||
emit progress();
|
emit progress(getSize());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (packet.getPacketPosition() == NLPacket::PacketPosition::LAST) {
|
if (packet.getPacketPosition() == NLPacket::PacketPosition::LAST) {
|
||||||
|
|
|
@ -78,7 +78,7 @@ public:
|
||||||
template<typename T> qint64 readHeadPrimitive(T* data);
|
template<typename T> qint64 readHeadPrimitive(T* data);
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void progress();
|
void progress(qint64 size);
|
||||||
void completed();
|
void completed();
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
|
|
Loading…
Reference in a new issue