diff --git a/src/library/coverartutils.cpp b/src/library/coverartutils.cpp index 067528007cb6..09764ae6c60f 100644 --- a/src/library/coverartutils.cpp +++ b/src/library/coverartutils.cpp @@ -216,18 +216,19 @@ void CoverInfoGuesser::guessAndSetCoverInfoForTracks( } } -void guessTrackCoverInfoConcurrently( +QFuture guessTrackCoverInfoConcurrently( TrackPointer pTrack) { VERIFY_OR_DEBUG_ASSERT(pTrack) { - return; + return {}; } if (s_enableConcurrentGuessingOfTrackCoverInfo) { - QtConcurrent::run([pTrack] { + return QtConcurrent::run([pTrack] { CoverInfoGuesser().guessAndSetCoverInfoForTrack(*pTrack); }); } else { // Disabled only during tests CoverInfoGuesser().guessAndSetCoverInfoForTrack(*pTrack); + return {}; } } diff --git a/src/library/coverartutils.h b/src/library/coverartutils.h index fb858f2b8353..3019c2f45eb4 100644 --- a/src/library/coverartutils.h +++ b/src/library/coverartutils.h @@ -1,5 +1,6 @@ #pragma once +#include #include #include #include @@ -93,7 +94,7 @@ class CoverInfoGuesser { // Guesses the cover art for the provided tracks by searching the tracks' // metadata and folders for image files. All I/O is done in a separate // thread. -void guessTrackCoverInfoConcurrently(TrackPointer pTrack); +[[nodiscard]] QFuture guessTrackCoverInfoConcurrently(TrackPointer pTrack); // Concurrent guessing of track covers during short running // tests may cause spurious test failures due to timing issues. diff --git a/src/library/dao/trackdao.cpp b/src/library/dao/trackdao.cpp index f10914bfcc4d..87d0f6409c36 100644 --- a/src/library/dao/trackdao.cpp +++ b/src/library/dao/trackdao.cpp @@ -2181,7 +2181,9 @@ TrackPointer TrackDAO::getOrAddTrack( // If the track wasn't in the library already then it has not yet // been checked for cover art. - guessTrackCoverInfoConcurrently(pTrack); + const auto future = guessTrackCoverInfoConcurrently(pTrack); + // Don't wait for the result and keep running in the background + Q_UNUSED(future) return pTrack; } diff --git a/src/widget/wcoverart.cpp b/src/widget/wcoverart.cpp index a60adaf0c13f..ee8f8904d8f2 100644 --- a/src/widget/wcoverart.cpp +++ b/src/widget/wcoverart.cpp @@ -99,7 +99,9 @@ void WCoverArt::slotReloadCoverArt() { if (!m_loadedTrack) { return; } - guessTrackCoverInfoConcurrently(m_loadedTrack); + const auto future = guessTrackCoverInfoConcurrently(m_loadedTrack); + // Don't wait for the result and keep running in the background + Q_UNUSED(future) } void WCoverArt::slotCoverInfoSelected(const CoverInfoRelative& coverInfo) { diff --git a/src/widget/wspinny.cpp b/src/widget/wspinny.cpp index 7c1653bd91e5..d0c508f98af8 100644 --- a/src/widget/wspinny.cpp +++ b/src/widget/wspinny.cpp @@ -304,7 +304,9 @@ void WSpinny::slotReloadCoverArt() { if (!m_loadedTrack) { return; } - guessTrackCoverInfoConcurrently(m_loadedTrack); + const auto future = guessTrackCoverInfoConcurrently(m_loadedTrack); + // Don't wait for the result and keep running in the background + Q_UNUSED(future) } void WSpinny::paintEvent(QPaintEvent *e) {