From 50b954034c8f9286af7fdf4d733d889da7da7d46 Mon Sep 17 00:00:00 2001 From: Jonas Kvinge Date: Thu, 23 Oct 2025 00:39:40 +0200 Subject: [PATCH] OpenTidalCoverProvider: Check for already finished --- src/covermanager/opentidalcoverprovider.cpp | 14 ++++++++++---- src/covermanager/opentidalcoverprovider.h | 3 ++- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/src/covermanager/opentidalcoverprovider.cpp b/src/covermanager/opentidalcoverprovider.cpp index 5bec2b5cb..62e8008c3 100644 --- a/src/covermanager/opentidalcoverprovider.cpp +++ b/src/covermanager/opentidalcoverprovider.cpp @@ -271,8 +271,9 @@ void OpenTidalCoverProvider::HandleSearchReply(QNetworkReply *reply, SearchReque reply->deleteLater(); const QScopeGuard search_finished = qScopeGuard([this, search_request]() { - if (search_request->albumcover_requests.isEmpty()) { + if (!search_request->finished && search_request->albumcover_requests.isEmpty()) { Q_EMIT SearchFinished(search_request->id, search_request->results); + search_request->finished = true; } }); @@ -355,8 +356,9 @@ void OpenTidalCoverProvider::HandleAlbumCoverReply(QNetworkReply *reply, SearchR if (albumcover_request->artwork_requests.isEmpty()) { search_request->albumcover_requests.removeAll(albumcover_request); } - if (search_request->albumcover_requests.isEmpty()) { + if (!search_request->finished && search_request->albumcover_requests.isEmpty()) { Q_EMIT SearchFinished(search_request->id, search_request->results); + search_request->finished = true; } }); @@ -436,8 +438,9 @@ void OpenTidalCoverProvider::HandleArtworkReply(QNetworkReply *reply, SearchRequ if (albumcover_request->artwork_requests.isEmpty()) { search_request->albumcover_requests.removeAll(albumcover_request); } - if (search_request->albumcover_requests.isEmpty()) { + if (!search_request->finished && search_request->albumcover_requests.isEmpty()) { Q_EMIT SearchFinished(search_request->id, search_request->results); + search_request->finished = true; } }); @@ -500,7 +503,10 @@ void OpenTidalCoverProvider::FinishAllSearches() { QueuedSearchRequestPtr queued_search_request = search_requests_queue_.dequeue(); SearchRequestPtr search_request = queued_search_request->search; search_request->albumcover_requests.clear(); - Q_EMIT SearchFinished(search_request->id, CoverProviderSearchResults()); + if (!search_request->finished) { + Q_EMIT SearchFinished(search_request->id, CoverProviderSearchResults()); + search_request->finished = true; + } } timer_flush_requests_->stop(); diff --git a/src/covermanager/opentidalcoverprovider.h b/src/covermanager/opentidalcoverprovider.h index 40f460d46..11f6c7eac 100644 --- a/src/covermanager/opentidalcoverprovider.h +++ b/src/covermanager/opentidalcoverprovider.h @@ -63,13 +63,14 @@ class OpenTidalCoverProvider : public JsonCoverProvider { class SearchRequest { public: - explicit SearchRequest(const int _id, const QString &_artist, const QString &_album, const QString &_title) : id(_id), artist(_artist), album(_album), title(_title) {} + explicit SearchRequest(const int _id, const QString &_artist, const QString &_album, const QString &_title) : id(_id), artist(_artist), album(_album), title(_title), finished(false) {} int id; QString artist; QString album; QString title; QList albumcover_requests; CoverProviderSearchResults results; + bool finished; }; using SearchRequestPtr = SharedPtr;