diff options
| author | Liguros - Gitlab CI/CD [develop] <gitlab@liguros.net> | 2024-12-28 06:48:44 +0000 |
|---|---|---|
| committer | Liguros - Gitlab CI/CD [develop] <gitlab@liguros.net> | 2024-12-28 06:48:44 +0000 |
| commit | 6755ceb5710085dde2c6858873dde9fb3e73cbee (patch) | |
| tree | 7e2e2e3c2256b241c072a0a926b682ac45f772b1 /media-sound/gogglesmm | |
| parent | 5a42dba63cb4192c31a4fa0ec58d1378cf0bbd5c (diff) | |
| download | baldeagleos-repo-6755ceb5710085dde2c6858873dde9fb3e73cbee.tar.gz baldeagleos-repo-6755ceb5710085dde2c6858873dde9fb3e73cbee.tar.xz baldeagleos-repo-6755ceb5710085dde2c6858873dde9fb3e73cbee.zip | |
Adding metadata
Diffstat (limited to 'media-sound/gogglesmm')
| -rw-r--r-- | media-sound/gogglesmm/files/gogglesmm-1.2.1-fix-build-taglib2.patch | 357 | ||||
| -rw-r--r-- | media-sound/gogglesmm/gogglesmm-1.2.1-r3.ebuild | 53 |
2 files changed, 410 insertions, 0 deletions
diff --git a/media-sound/gogglesmm/files/gogglesmm-1.2.1-fix-build-taglib2.patch b/media-sound/gogglesmm/files/gogglesmm-1.2.1-fix-build-taglib2.patch new file mode 100644 index 000000000000..fd53ea74c4f1 --- /dev/null +++ b/media-sound/gogglesmm/files/gogglesmm-1.2.1-fix-build-taglib2.patch @@ -0,0 +1,357 @@ +https://github.com/gogglesmm/gogglesmm/commit/abd6ec6b8270feb1841a97f9be5364541f4a939c.patch +https://github.com/gogglesmm/gogglesmm/commit/9f7110b0950a2862016e18163b9c2737a2a935d6.patch + +diff --git a/src/GMAbout.cpp b/src/GMAbout.cpp +index eb2c565..0b625cb 100644 +--- a/src/GMAbout.cpp ++++ b/src/GMAbout.cpp +@@ -27,7 +27,6 @@ + #endif + #include <FXPNGIcon.h> + #include <sqlite3.h> +-#include <tag.h> + + #define UTF8_COPYRIGHT_SIGN "\xc2\xa9" + +diff --git a/src/GMTag.cpp b/src/GMTag.cpp +index 2add466..a32ce46 100644 +--- a/src/GMTag.cpp ++++ b/src/GMTag.cpp +@@ -26,9 +26,9 @@ + #include "GMTag.h" + #include "GMAudioPlayer.h" + +-/// TagLib +- + ++// taglib Variant enum Type { Bool } conflicts with Xlib ++#undef Bool + #include <fileref.h> + #include <tstring.h> + #include <id3v1tag.h> +@@ -339,6 +339,7 @@ static void gm_strip_tags(TagLib::File * file,FXuint opts) { + /******************************************************************************/ + + GMFileTag::GMFileTag() : ++ fileref(nullptr), + file(nullptr), + tag(nullptr), + mp4(nullptr), +@@ -349,20 +350,35 @@ GMFileTag::GMFileTag() : + } + + GMFileTag::~GMFileTag() { ++#if TAGLIB_VERSION >= TAGVERSION(2,0,0) ++ if (fileref) delete fileref; ++#else + if (file) delete file; ++#endif + } + + + FXbool GMFileTag::open(const FXString & filename,FXuint opts) { +- +- file = TagLib::FileRef::create(filename.text(),(opts&FILETAG_AUDIOPROPERTIES)); +- if (file==nullptr || !file->isValid() || file->tag()==nullptr) { +- if (file) { +- delete file; +- file=nullptr; ++#if TAGLIB_VERSION >= TAGVERSION(2,0,0) ++ fileref = new TagLib::FileRef(filename.text(),(opts&FILETAG_AUDIOPROPERTIES)); ++ file = fileref->file(); ++ if (file==nullptr || !file->isValid() || file->tag()==nullptr) { ++ if (fileref) { ++ delete fileref; ++ fileref=nullptr; ++ } ++ return false; + } +- return false; +- } ++#else ++ file = TagLib::FileRef::create(filename.text(),(opts&FILETAG_AUDIOPROPERTIES)); ++ if (file==nullptr || !file->isValid() || file->tag()==nullptr) { ++ if (file) { ++ delete file; ++ file=nullptr; ++ } ++ return false; ++ } ++#endif + + TagLib::MPEG::File * mpgfile = nullptr; + TagLib::Ogg::Vorbis::File * oggfile = nullptr; +@@ -521,7 +537,11 @@ FXbool GMFileTag::ape_get_field(const FXchar * field,FXStringList & list) const + FXASSERT(field); + FXASSERT(ape); + if (ape->itemListMap().contains(field)) { ++#if TAGLIB_VERSION >= TAGVERSION(2,0,0) ++ const TagLib::StringList fieldlist = ape->itemListMap()[field].values(); ++#else + const TagLib::StringList fieldlist = ape->itemListMap()[field].toStringList(); ++#endif + list.no(fieldlist.size()); + FXint item=0; + for(TagLib::StringList::ConstIterator it = fieldlist.begin(); it != fieldlist.end(); it++) { +@@ -635,16 +655,35 @@ FXbool GMFileTag::id3v2_get_field(const FXchar * field,FXStringList & list) con + void GMFileTag::mp4_update_field(const FXchar * field,const FXString & value) { + FXASSERT(field); + FXASSERT(mp4); ++#if TAGLIB_VERSION >= TAGVERSION(1,12,0) ++ if (!value.empty()) ++ mp4->setItem(field,TagLib::StringList(TagLib::String(value.text(),TagLib::String::UTF8))); ++ else ++ mp4->removeItem(field); ++#else + if (!value.empty()) + mp4->itemListMap().insert(field,TagLib::StringList(TagLib::String(value.text(),TagLib::String::UTF8))); + else + mp4->itemListMap().erase(field); ++#endif + } + + + void GMFileTag::mp4_update_field(const FXchar * field,const FXStringList & list) { + FXASSERT(field); + FXASSERT(mp4); ++#if TAGLIB_VERSION >= TAGVERSION(1,12,0) ++ if (list.no()==0) { ++ mp4->removeItem(field); ++ } ++ else { ++ TagLib::StringList values; ++ for (FXint i=0;i<list.no();i++) { ++ values.append(TagLib::String(list[i].text(),TagLib::String::UTF8)); ++ } ++ mp4->setItem(field,values); ++ } ++#else + if (list.no()==0) { + mp4->itemListMap().erase(field); + } +@@ -655,12 +694,24 @@ void GMFileTag::mp4_update_field(const FXchar * field,const FXStringList & list) + } + mp4->itemListMap().insert(field,values); + } ++#endif + } + + + FXbool GMFileTag::mp4_get_field(const FXchar * field,FXString & value) const { + FXASSERT(field); + FXASSERT(mp4); ++#if TAGLIB_VERSION >= TAGVERSION(1,12,0) ++ if (mp4->contains(field)) { ++ value=mp4->item(field).toStringList().toString(", ").toCString(true); ++ value.trim(); ++ return !value.empty(); ++ } ++ else { ++ value.clear(); ++ return false; ++ } ++#else + if (mp4->itemListMap().contains(field)) { + value=mp4->itemListMap()[field].toStringList().toString(", ").toCString(true); + value.trim(); +@@ -670,14 +721,20 @@ FXbool GMFileTag::mp4_get_field(const FXchar * field,FXString & value) const { + value.clear(); + return false; + } ++#endif + } + + + FXbool GMFileTag::mp4_get_field(const FXchar * field,FXStringList & list) const{ + FXASSERT(field); + FXASSERT(mp4); ++#if TAGLIB_VERSION >= TAGVERSION(1,12,0) ++ if (mp4->contains(field)) { ++ const TagLib::StringList fieldlist = mp4->item(field).toStringList(); ++#else + if (mp4->itemListMap().contains(field)) { + const TagLib::StringList fieldlist = mp4->itemListMap()[field].toStringList(); ++#endif + list.no(fieldlist.size()); + FXint item=0; + for(TagLib::StringList::ConstIterator it = fieldlist.begin(); it != fieldlist.end(); it++) { +@@ -936,12 +993,21 @@ void GMFileTag::setDiscNumber(FXushort disc) { + else + id3v2_update_field("TPOS",FXString::null); + } ++#if TAGLIB_VERSION >= TAGVERSION(1,12,0) ++ if (mp4) { ++ if (disc>0) ++ mp4->setItem("disk",TagLib::MP4::Item(disc,0)); ++ else ++ mp4->removeItem("disk"); ++ } ++#else + if (mp4) { + if (disc>0) + mp4->itemListMap().insert("disk",TagLib::MP4::Item(disc,0)); + else + mp4->itemListMap().erase("disk"); + } ++#endif + } + + +@@ -959,9 +1025,15 @@ FXushort GMFileTag::getDiscNumber() const{ + else if (id3v2 && id3v2_get_field("TPOS",disc)) { + return string_to_disc_number(disc); + } ++#if TAGLIB_VERSION >= TAGVERSION(1,12,0) ++ else if (mp4 && mp4->contains("disk")) { ++ return FXMIN(mp4->item("disk").toIntPair().first,0xFFFF); ++ } ++#else + else if (mp4 && mp4->itemListMap().contains("disk")) { + return FXMIN(mp4->itemListMap()["disk"].toIntPair().first,0xFFFF); + } ++#endif + return 0; + } + +@@ -969,7 +1041,11 @@ FXint GMFileTag::getTime() const{ + FXASSERT(file); + TagLib::AudioProperties * properties = file->audioProperties(); + if (properties) ++#if TAGLIB_VERSION >= TAGVERSION(2,0,0) ++ return properties->lengthInSeconds(); ++#else + return properties->length(); ++#endif + else + return 0; + } +@@ -1007,7 +1083,11 @@ FXint GMFileTag::getSampleSize() const{ + FXASSERT(file); + TagLib::FLAC::File * flacfile = dynamic_cast<TagLib::FLAC::File*>(file); + if (flacfile && flacfile->audioProperties()) { ++#if TAGLIB_VERSION >= TAGVERSION(1,12,0) ++ return flacfile->audioProperties()->bitsPerSample(); ++#else + return flacfile->audioProperties()->sampleWidth(); ++#endif + } + else + return 0; +@@ -1081,6 +1161,16 @@ GMCover * GMFileTag::getFrontCover() const { + #endif + } + else if (mp4) { /// MP4 ++#if TAGLIB_VERSION >= TAGVERSION(1,12,0) ++ if (mp4->contains("covr")) { ++ TagLib::MP4::CoverArtList coverlist = mp4->item("covr").toCoverArtList(); ++ for(TagLib::MP4::CoverArtList::Iterator it = coverlist.begin(); it != coverlist.end(); it++) { ++ if (it->data().size()) ++ return new GMCover(it->data().data(),it->data().size()); ++ } ++ } ++ } ++#else + if (mp4->itemListMap().contains("covr")) { + TagLib::MP4::CoverArtList coverlist = mp4->itemListMap()["covr"].toCoverArtList(); + for(TagLib::MP4::CoverArtList::Iterator it = coverlist.begin(); it != coverlist.end(); it++) { +@@ -1089,6 +1179,7 @@ GMCover * GMFileTag::getFrontCover() const { + } + } + } ++#endif + return nullptr; + } + +@@ -1134,6 +1225,15 @@ FXint GMFileTag::getCovers(GMCoverList & covers) const { + } + } + else if (mp4) { ++#if TAGLIB_VERSION >= TAGVERSION(1,12,0) ++ if (mp4->contains("covr")) { ++ TagLib::MP4::CoverArtList coverlist = mp4->item("covr").toCoverArtList(); ++ for(TagLib::MP4::CoverArtList::Iterator it = coverlist.begin(); it != coverlist.end(); it++) { ++ if (it->data().size()) ++ covers.append(new GMCover(it->data().data(),it->data().size(),0)); ++ } ++ } ++#else + if (mp4->itemListMap().contains("covr")) { + TagLib::MP4::CoverArtList coverlist = mp4->itemListMap()["covr"].toCoverArtList(); + for(TagLib::MP4::CoverArtList::Iterator it = coverlist.begin(); it != coverlist.end(); it++) { +@@ -1141,6 +1241,7 @@ FXint GMFileTag::getCovers(GMCoverList & covers) const { + covers.append(new GMCover(it->data().data(),it->data().size(),0)); + } + } ++#endif + } + return covers.no(); + } +@@ -1191,7 +1292,7 @@ void GMFileTag::replaceCover(GMCover*cover,FXuint mode){ + } + else if (mp4) { + // mp4 has no type information so we erase all +- mp4->itemListMap().erase("covr"); ++ clearCovers(); + } + } + else { // COVER_REPLACE_ALL +@@ -1216,7 +1317,11 @@ void GMFileTag::clearCovers() { + #endif + } + else if (mp4) { +- mp4->itemListMap().erase("covr"); ++#if TAGLIB_VERSION >= TAGVERSION(1,12,0) ++ mp4->removeItem("covr"); ++#else ++ mp4->itemListMap().erase("covr"); ++#endif + } + } + +@@ -1303,6 +1408,18 @@ void GMFileTag::appendCover(GMCover* cover){ + case FILETYPE_GIF: format = TagLib::MP4::CoverArt::GIF; break; + default: return; break; + } ++#if TAGLIB_VERSION >= TAGVERSION(1,12,0) ++ if (!mp4->contains("covr")) { ++ TagLib::MP4::CoverArtList list; ++ list.append(TagLib::MP4::CoverArt(format,TagLib::ByteVector((const FXchar*)cover->data,cover->size))); ++ mp4->setItem("covr",list); ++ } ++ else { ++ TagLib::MP4::CoverArtList list = mp4->item("covr").toCoverArtList(); ++ list.append(TagLib::MP4::CoverArt(format,TagLib::ByteVector((const FXchar*)cover->data,cover->size))); ++ mp4->setItem("covr",list); ++ } ++#else + if (!mp4->itemListMap().contains("covr")) { + TagLib::MP4::CoverArtList list; + list.append(TagLib::MP4::CoverArt(format,TagLib::ByteVector((const FXchar*)cover->data,cover->size))); +@@ -1313,6 +1430,7 @@ void GMFileTag::appendCover(GMCover* cover){ + list.append(TagLib::MP4::CoverArt(format,TagLib::ByteVector((const FXchar*)cover->data,cover->size))); + mp4->itemListMap().insert("covr",list); + } ++#endif + } + } + +diff --git a/src/GMTag.h b/src/GMTag.h +index 26b76f2..1c5fd77 100644 +--- a/src/GMTag.h ++++ b/src/GMTag.h +@@ -21,6 +21,7 @@ + + + namespace TagLib { ++ class FileRef; + class File; + class Tag; + namespace MP4 { +@@ -54,6 +55,7 @@ typedef FXArray<GMCover*> GMCoverList; + + class GMFileTag { + protected: ++ TagLib::FileRef * fileref; + TagLib::File * file; + TagLib::Tag * tag; + TagLib::MP4::Tag * mp4; diff --git a/media-sound/gogglesmm/gogglesmm-1.2.1-r3.ebuild b/media-sound/gogglesmm/gogglesmm-1.2.1-r3.ebuild new file mode 100644 index 000000000000..37c4e7576662 --- /dev/null +++ b/media-sound/gogglesmm/gogglesmm-1.2.1-r3.ebuild @@ -0,0 +1,53 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit cmake xdg + +DESCRIPTION="Fast and light music player" +HOMEPAGE="https://gogglesmm.github.io" +SRC_URI="https://github.com/${PN}/${PN}/archive/${PV}.tar.gz -> ${P}.tar.gz" + +LICENSE="GPL-3" +SLOT="0" +KEYWORDS="~amd64 ~x86" +IUSE="+aac +dbus +flac +mad nls +ogg +opengl +opus +pulseaudio +vorbis" + +RDEPEND=" + dev-db/sqlite + dev-libs/expat + dev-libs/libgcrypt:= + media-libs/taglib:= + x11-libs/fox:1.7 + x11-libs/libICE + x11-libs/libSM + aac? ( media-libs/faad2 ) + dbus? ( sys-apps/dbus ) + flac? ( media-libs/flac:= ) + mad? ( media-libs/libmad ) + ogg? ( media-libs/libogg ) + opengl? ( + media-libs/libepoxy + virtual/glu + ) + opus? ( media-libs/opus ) + pulseaudio? ( media-libs/libpulse ) + vorbis? ( media-libs/libvorbis ) +" +DEPEND="${RDEPEND}" + +PATCHES=( + "${FILESDIR}"/"${P}"-use-fox-1.7.67.patch + "${FILESDIR}"/"${P}"-fix-build-taglib2.patch +) + +src_configure() { + local mycmakeargs=( + -DWITH_DBUS="$(usex dbus)" + -DWITH_NLS="$(usex nls)" + -DWITH_OPENGL="$(usex opengl)" + -DWITH_CFOX=OFF + ) + cmake_src_configure +} |
