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();
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();

View File

@@ -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<AlbumCoverRequestPtr> albumcover_requests;
CoverProviderSearchResults results;
bool finished;
};
using SearchRequestPtr = SharedPtr<SearchRequest>;