diff --git a/src/core/albumcoverloader.cpp b/src/core/albumcoverloader.cpp index 2a2d91f40..fcce2f3b7 100644 --- a/src/core/albumcoverloader.cpp +++ b/src/core/albumcoverloader.cpp @@ -101,7 +101,7 @@ void AlbumCoverLoader::NextState(Task* task) { ProcessTask(task); } else { // Give up - emit ImageLoaded(task->id, QImage()); + emit ImageLoaded(task->id, default_); } } @@ -114,7 +114,7 @@ AlbumCoverLoader::TryLoadResult AlbumCoverLoader::TryLoadImage( } if (filename == kManuallyUnsetCover) - return TryLoadResult(false, true, QImage()); + return TryLoadResult(false, true, default_); if (filename.toLower().startsWith("http://")) { network_->Get(QUrl(filename), this, "RemoteFetchFinished", task.id, true); @@ -124,7 +124,7 @@ AlbumCoverLoader::TryLoadResult AlbumCoverLoader::TryLoadImage( } QImage image(filename); - return TryLoadResult(false, !image.isNull(), image); + return TryLoadResult(false, !image.isNull(), image.isNull() ? default_ : image); } void AlbumCoverLoader::RemoteFetchFinished(quint64 id, QNetworkReply* reply) { @@ -177,3 +177,7 @@ QPixmap AlbumCoverLoader::TryLoadPixmap(const QString &automatic, const QString ret.load(automatic); return ret; } + +void AlbumCoverLoader::SetDefaultOutputImage(const QImage &image) { + default_ = ScaleAndPad(image); +} diff --git a/src/core/albumcoverloader.h b/src/core/albumcoverloader.h index 64ddb88b2..7a4bc69c3 100644 --- a/src/core/albumcoverloader.h +++ b/src/core/albumcoverloader.h @@ -41,6 +41,7 @@ class AlbumCoverLoader : public QObject { void SetDesiredHeight(int height) { height_ = height; } void SetPadOutputImage(bool padding) { padding_ = padding; } + void SetDefaultOutputImage(const QImage& image); quint64 LoadImageAsync(const QString& art_automatic, const QString& art_manual); void Clear(); @@ -87,6 +88,7 @@ class AlbumCoverLoader : public QObject { int height_; bool padding_; + QImage default_; QMutex mutex_; QQueue tasks_; diff --git a/src/ui/albumcovermanager.cpp b/src/ui/albumcovermanager.cpp index b14c19b80..d09bd194b 100644 --- a/src/ui/albumcovermanager.cpp +++ b/src/ui/albumcovermanager.cpp @@ -123,6 +123,7 @@ void AlbumCoverManager::Init() { void AlbumCoverManager::CoverLoaderInitialised() { cover_loader_->Worker()->SetNetwork(network_); + cover_loader_->Worker()->SetDefaultOutputImage(QImage(":nocover.png")); connect(cover_loader_->Worker().get(), SIGNAL(ImageLoaded(quint64,QImage)), SLOT(CoverImageLoaded(quint64,QImage))); } diff --git a/src/widgets/osd.cpp b/src/widgets/osd.cpp index b923b6e68..7ebea42f0 100644 --- a/src/widgets/osd.cpp +++ b/src/widgets/osd.cpp @@ -51,6 +51,7 @@ OSD::~OSD() { void OSD::CoverLoaderInitialised() { cover_loader_->Worker()->SetNetwork(network_); cover_loader_->Worker()->SetPadOutputImage(false); + cover_loader_->Worker()->SetDefaultOutputImage(QImage(":nocover.png")); connect(cover_loader_->Worker().get(), SIGNAL(ImageLoaded(quint64,QImage)), SLOT(AlbumArtLoaded(quint64,QImage))); }