OpenTidalCoverProvider: Check for already finished
This commit is contained in:
@@ -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();
|
||||||
|
|||||||
@@ -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>;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user