From 4094304d23969a7c0b9c4ee8cd3ae1c7106190af Mon Sep 17 00:00:00 2001 From: Ivailo Monev Date: Sat, 2 Mar 2024 18:24:29 +0200 Subject: [PATCH] thumbnailers: fix build with taglib v2.0+ also added a pointer check for just in case Signed-off-by: Ivailo Monev --- thumbnailers/audio/AudioThumbs.cpp | 34 ++++++++++++++++++------------ 1 file changed, 21 insertions(+), 13 deletions(-) diff --git a/thumbnailers/audio/AudioThumbs.cpp b/thumbnailers/audio/AudioThumbs.cpp index a0a24d27..c22f72f3 100644 --- a/thumbnailers/audio/AudioThumbs.cpp +++ b/thumbnailers/audio/AudioThumbs.cpp @@ -65,6 +65,7 @@ bool ATCreator::create(const QString &path, int /*w*/, int /*h*/, QImage &img) if (type->is("audio/mpeg")) { TagLib::MPEG::File mp3File(path.toUtf8()); TagLib::ID3v2::Tag *mp3Tag = mp3File.ID3v2Tag(); + if (mp3Tag) { TagLib::ID3v2::FrameList fList = mp3Tag->frameList("APIC"); TagLib::ID3v2::AttachedPictureFrame *pic = static_cast(fList.front()); @@ -87,25 +88,32 @@ bool ATCreator::create(const QString &path, int /*w*/, int /*h*/, QImage &img) } } else if (type->is("audio/mp4")) { TagLib::MP4::File mp4file(path.toUtf8()); - TagLib::MP4::Tag *tag = mp4file.tag(); - TagLib::MP4::ItemListMap map = tag->itemListMap(); + TagLib::MP4::Tag *mp4tag = mp4file.tag(); - for (TagLib::MP4::ItemListMap::ConstIterator it = map.begin(); it != map.end(); ++it) { - TagLib::MP4::CoverArtList coverList = (*it).second.toCoverArtList(); - if (!coverList.isEmpty()) { - TagLib::MP4::CoverArt cover = coverList.front(); - TagLib::ByteVector coverData = cover.data(); - img.loadFromData(coverData.data(), coverData.size()); - bRet = true; - break; + if (mp4tag) { +#if TAGLIB_MAJOR_VERSION >= 2 + TagLib::MP4::ItemMap map = mp4tag->itemMap(); + for (TagLib::MP4::ItemMap::ConstIterator it = map.begin(); it != map.end(); ++it) { +#else + TagLib::MP4::ItemListMap map = mp4tag->itemListMap(); + for (TagLib::MP4::ItemListMap::ConstIterator it = map.begin(); it != map.end(); ++it) { +#endif + TagLib::MP4::CoverArtList coverList = (*it).second.toCoverArtList(); + if (!coverList.isEmpty()) { + TagLib::MP4::CoverArt cover = coverList.front(); + TagLib::ByteVector coverData = cover.data(); + img.loadFromData(coverData.data(), coverData.size()); + bRet = true; + break; + } } } } else if (type->is("audio/x-vorbis+ogg") || type->is("audio/ogg")) { TagLib::Ogg::Vorbis::File file(path.toUtf8()); - TagLib::Ogg::XiphComment *tag = file.tag(); + TagLib::Ogg::XiphComment *oggtag = file.tag(); - if (tag) { - TagLib::List picturelist = tag->pictureList(); + if (oggtag) { + TagLib::List picturelist = oggtag->pictureList(); for (int i = 0; i < picturelist.size(); i++) { // qDebug() << Q_FUNC_INFO << picturelist[i]->code(); switch (picturelist[i]->code()) {