OpenTidalCoverProvider: Check for already finished

This commit is contained in:
Jonas Kvinge
2025-10-23 00:39:40 +02:00
parent cab7b6c335
commit 50b954034c
2 changed files with 12 additions and 5 deletions

View File

@@ -271,8 +271,9 @@ void OpenTidalCoverProvider::HandleSearchReply(QNetworkReply *reply, SearchReque
reply->deleteLater(); reply->deleteLater();
const QScopeGuard search_finished = qScopeGuard([this, search_request]() { 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); 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()) { if (albumcover_request->artwork_requests.isEmpty()) {
search_request->albumcover_requests.removeAll(albumcover_request); 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); 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()) { if (albumcover_request->artwork_requests.isEmpty()) {
search_request->albumcover_requests.removeAll(albumcover_request); 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); 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(); QueuedSearchRequestPtr queued_search_request = search_requests_queue_.dequeue();
SearchRequestPtr search_request = queued_search_request->search; SearchRequestPtr search_request = queued_search_request->search;
search_request->albumcover_requests.clear(); 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(); timer_flush_requests_->stop();

View File

@@ -63,13 +63,14 @@ class OpenTidalCoverProvider : public JsonCoverProvider {
class SearchRequest { class SearchRequest {
public: 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; int id;
QString artist; QString artist;
QString album; QString album;
QString title; QString title;
QList<AlbumCoverRequestPtr> albumcover_requests; QList<AlbumCoverRequestPtr> albumcover_requests;
CoverProviderSearchResults results; CoverProviderSearchResults results;
bool finished;
}; };
using SearchRequestPtr = SharedPtr<SearchRequest>; using SearchRequestPtr = SharedPtr<SearchRequest>;