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 d2d9fc237..8045bcfdb 100644 --- a/cockatrice/src/client/ui/picture_loader/picture_loader_worker.cpp +++ b/cockatrice/src/client/ui/picture_loader/picture_loader_worker.cpp @@ -15,7 +15,7 @@ static constexpr int MAX_REQUESTS_PER_SEC = 10; PictureLoaderWorker::PictureLoaderWorker() - : QObject(nullptr), picDownload(SettingsCache::instance().getPicDownload()), requestCounter(MAX_REQUESTS_PER_SEC) + : QObject(nullptr), picDownload(SettingsCache::instance().getPicDownload()), requestQuota(MAX_REQUESTS_PER_SEC) { networkManager = new QNetworkAccessManager(this); // We need a timeout to ensure requests don't hang indefinitely in case of @@ -51,7 +51,7 @@ PictureLoaderWorker::PictureLoaderWorker() connect(this, &PictureLoaderWorker::imageLoadEnqueued, this, &PictureLoaderWorker::handleImageLoadEnqueued); - connect(&requestTimer, &QTimer::timeout, this, &PictureLoaderWorker::resetRequestCounter); + connect(&requestTimer, &QTimer::timeout, this, &PictureLoaderWorker::resetRequestQuota); requestTimer.setInterval(1000); requestTimer.start(); } @@ -99,16 +99,19 @@ QNetworkReply *PictureLoaderWorker::makeRequest(const QUrl &url, PictureLoaderWo return reply; } -void PictureLoaderWorker::resetRequestCounter() +void PictureLoaderWorker::resetRequestQuota() { - requestCounter = MAX_REQUESTS_PER_SEC; + requestQuota = MAX_REQUESTS_PER_SEC; processQueuedRequests(); } +/** + * Keeps processing requests from the queue until the quota runs out or the request queue runs out. + */ void PictureLoaderWorker::processQueuedRequests() { - while (requestCounter > 0 && processSingleRequest()) { - --requestCounter; + while (requestQuota > 0 && processSingleRequest()) { + --requestQuota; } } diff --git a/cockatrice/src/client/ui/picture_loader/picture_loader_worker.h b/cockatrice/src/client/ui/picture_loader/picture_loader_worker.h index 3c1cdd7ab..11a92e32a 100644 --- a/cockatrice/src/client/ui/picture_loader/picture_loader_worker.h +++ b/cockatrice/src/client/ui/picture_loader/picture_loader_worker.h @@ -53,8 +53,8 @@ private: bool picDownload; QQueue> requestLoadQueue; - int requestCounter; - QTimer requestTimer; // Timer for refreshing request counter + int requestQuota; + QTimer requestTimer; // Timer for refreshing request quota PictureLoaderLocal *localLoader; QSet currentlyLoading; // for deduplication purposes @@ -65,7 +65,7 @@ private: void cleanStaleEntries(); private slots: - void resetRequestCounter(); + void resetRequestQuota(); void handleImageLoadEnqueued(const CardInfoPtr &card); signals: