From 155448d3619dc5aee15a0e2f756f7e7de35f73b4 Mon Sep 17 00:00:00 2001 From: RickyRister Date: Mon, 11 Aug 2025 00:37:04 -0700 Subject: [PATCH] Run reply processing in thread pool --- .../client/ui/picture_loader/picture_loader_worker.cpp | 2 +- .../ui/picture_loader/picture_loader_worker_work.cpp | 10 ++++++++++ .../ui/picture_loader/picture_loader_worker_work.h | 3 ++- 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/cockatrice/src/client/ui/picture_loader/picture_loader_worker.cpp b/cockatrice/src/client/ui/picture_loader/picture_loader_worker.cpp index 26cf09156..ff3b5fcbb 100644 --- a/cockatrice/src/client/ui/picture_loader/picture_loader_worker.cpp +++ b/cockatrice/src/client/ui/picture_loader/picture_loader_worker.cpp @@ -94,7 +94,7 @@ QNetworkReply *PictureLoaderWorker::makeRequest(const QUrl &url, PictureLoaderWo QNetworkReply *reply = networkManager->get(req); // Connect reply handling - connect(reply, &QNetworkReply::finished, worker, [reply, worker] { worker->handleNetworkReply(reply); }); + connect(reply, &QNetworkReply::finished, worker, [reply, worker] { worker->acceptNetworkReply(reply); }); return reply; } diff --git a/cockatrice/src/client/ui/picture_loader/picture_loader_worker_work.cpp b/cockatrice/src/client/ui/picture_loader/picture_loader_worker_work.cpp index 04fd32164..f8af2a001 100644 --- a/cockatrice/src/client/ui/picture_loader/picture_loader_worker_work.cpp +++ b/cockatrice/src/client/ui/picture_loader/picture_loader_worker_work.cpp @@ -11,6 +11,7 @@ #include #include #include +#include // Card back returned by gatherer when card is not found static const QStringList MD5_BLACKLIST = {"db0c48db407a907c16ade38de048a441"}; @@ -69,6 +70,15 @@ void PictureLoaderWorkerWork::picDownloadFailed() } } +/** + * Processes the reply in another thread. + * @param reply The finished reply. Takes ownership of the object + */ +void PictureLoaderWorkerWork::acceptNetworkReply(QNetworkReply *reply) +{ + QThreadPool::globalInstance()->start([this, reply] { handleNetworkReply(reply); }); +} + /** * * @param reply The reply. Takes ownership of the object diff --git a/cockatrice/src/client/ui/picture_loader/picture_loader_worker_work.h b/cockatrice/src/client/ui/picture_loader/picture_loader_worker_work.h index a323c2f1d..87f8e5cb8 100644 --- a/cockatrice/src/client/ui/picture_loader/picture_loader_worker_work.h +++ b/cockatrice/src/client/ui/picture_loader/picture_loader_worker_work.h @@ -30,13 +30,14 @@ public: PictureToLoad cardToDownload; public slots: - void handleNetworkReply(QNetworkReply *reply); + void acceptNetworkReply(QNetworkReply *reply); private: bool picDownload; void startNextPicDownload(); void picDownloadFailed(); + void handleNetworkReply(QNetworkReply *reply); void handleFailedReply(const QNetworkReply *reply); void handleSuccessfulReply(QNetworkReply *reply); QImage tryLoadImageFromReply(QNetworkReply *reply);