diff --git a/audacious-plugins-2.4.3-adplug-static-init-mess.patch b/audacious-plugins-2.4.3-adplug-static-init-mess.patch new file mode 100644 index 0000000..a9af2a0 --- /dev/null +++ b/audacious-plugins-2.4.3-adplug-static-init-mess.patch @@ -0,0 +1,136 @@ +diff -Nur audacious-plugins-2.4.3-orig/src/adplug/adplug-xmms.cc audacious-plugins-2.4.3/src/adplug/adplug-xmms.cc +--- audacious-plugins-2.4.3-orig/src/adplug/adplug-xmms.cc 2011-01-12 12:13:26.000000000 +0100 ++++ audacious-plugins-2.4.3/src/adplug/adplug-xmms.cc 2011-02-17 01:39:02.900525050 +0100 +@@ -77,7 +77,7 @@ + CPlayers players; + } conf = + { +-44100l, true, false, false, CAdPlug::players}; ++44100l, true, false, false, CAdPlug::getPlayers()}; + + // Player variables + static struct +@@ -392,7 +392,7 @@ + gtk_clist_set_selection_mode (fl, GTK_SELECTION_MULTIPLE); + + // Build list +- for (i = CAdPlug::players.begin (); i != CAdPlug::players.end (); i++) ++ for (i = CAdPlug::getPlayers().begin (); i != CAdPlug::getPlayers().end (); i++) + { + gint rownum; + +@@ -1068,8 +1068,8 @@ + + dbg_printf ("exclude, "); + std::string exclude; +- for (CPlayers::const_iterator i = CAdPlug::players.begin (); +- i != CAdPlug::players.end (); i++) ++ for (CPlayers::const_iterator i = CAdPlug::getPlayers().begin (); ++ i != CAdPlug::getPlayers().end (); i++) + if (find (conf.players.begin (), conf.players.end (), *i) == + conf.players.end ()) + { +diff -Nur audacious-plugins-2.4.3-orig/src/adplug/core/adplug.cxx audacious-plugins-2.4.3/src/adplug/core/adplug.cxx +--- audacious-plugins-2.4.3-orig/src/adplug/core/adplug.cxx 2011-01-12 12:13:26.000000000 +0100 ++++ audacious-plugins-2.4.3/src/adplug/core/adplug.cxx 2011-02-17 01:41:28.885235908 +0100 +@@ -76,7 +76,7 @@ + /***** CAdPlug *****/ + + // List of all players that come with the standard AdPlug distribution +-const CPlayerDesc ++/*const CPlayerDesc + CAdPlug::allplayers[] = { + CPlayerDesc (ChscPlayer::factory, "HSC-Tracker", ".hsc\0"), + CPlayerDesc (CsngPlayer::factory, "SNGPlay", ".sng\0"), +@@ -121,7 +121,7 @@ + CPlayerDesc (CjbmPlayer::factory, "Johannes Bjerregaard", ".jbm\0"), + CPlayerDesc () + }; +- ++*/ + const + CPlayers & + CAdPlug::init_players (const CPlayerDesc pd[]) +@@ -135,8 +135,56 @@ + return initplayers; + } + +-const CPlayers +- CAdPlug::players = CAdPlug::init_players (CAdPlug::allplayers); ++const CPlayers& CAdPlug::getPlayers() { ++ static const CPlayerDesc ++ _allplayers[] = { ++ CPlayerDesc (ChscPlayer::factory, "HSC-Tracker", ".hsc\0"), ++ CPlayerDesc (CsngPlayer::factory, "SNGPlay", ".sng\0"), ++ CPlayerDesc (CimfPlayer::factory, "Apogee IMF", ".imf\0.wlf\0.adlib\0"), ++ CPlayerDesc (Ca2mLoader::factory, "Adlib Tracker 2", ".a2m\0"), ++ CPlayerDesc (CadtrackLoader::factory, "Adlib Tracker", ".sng\0"), ++ CPlayerDesc (CamdLoader::factory, "AMUSIC", ".amd\0"), ++ CPlayerDesc (CbamPlayer::factory, "Bob's Adlib Music", ".bam\0"), ++ CPlayerDesc (CcmfPlayer::factory, "Creative Music File", ".cmf\0"), ++ CPlayerDesc (Cd00Player::factory, "Packed EdLib", ".d00\0"), ++ CPlayerDesc (CdfmLoader::factory, "Digital-FM", ".dfm\0"), ++ CPlayerDesc (ChspLoader::factory, "HSC Packed", ".hsp\0"), ++ CPlayerDesc (CksmPlayer::factory, "Ken Silverman Music", ".ksm\0"), ++ CPlayerDesc (CmadLoader::factory, "Mlat Adlib Tracker", ".mad\0"), ++ CPlayerDesc (CmidPlayer::factory, "MIDI", ".sci\0.laa\0"), ++ CPlayerDesc (CmkjPlayer::factory, "MKJamz", ".mkj\0"), ++ CPlayerDesc (CcffLoader::factory, "Boomtracker", ".cff\0"), ++ CPlayerDesc (CdmoLoader::factory, "TwinTeam", ".dmo\0"), ++ CPlayerDesc (Cs3mPlayer::factory, "Scream Tracker 3", ".s3m\0"), ++ CPlayerDesc (CdtmLoader::factory, "DeFy Adlib Tracker", ".dtm\0"), ++ CPlayerDesc (CfmcLoader::factory, "Faust Music Creator", ".sng\0"), ++ CPlayerDesc (CmtkLoader::factory, "MPU-401 Trakker", ".mtk\0"), ++ CPlayerDesc (CradLoader::factory, "Reality Adlib Tracker", ".rad\0"), ++ CPlayerDesc (CrawPlayer::factory, "RdosPlay RAW", ".raw\0"), ++ CPlayerDesc (Csa2Loader::factory, "Surprise! Adlib Tracker", ++ ".sat\0.sa2\0"), ++ CPlayerDesc (CxadbmfPlayer::factory, "BMF Adlib Tracker", ".xad\0"), ++ CPlayerDesc (CxadflashPlayer::factory, "Flash", ".xad\0"), ++ CPlayerDesc (CxadhybridPlayer::factory, "Hybrid", ".xad\0"), ++ CPlayerDesc (CxadhypPlayer::factory, "Hypnosis", ".xad\0"), ++ CPlayerDesc (CxadpsiPlayer::factory, "PSI", ".xad\0"), ++ CPlayerDesc (CxadratPlayer::factory, "rat", ".xad\0"), ++ CPlayerDesc (CldsPlayer::factory, "LOUDNESS Sound System", ".lds\0"), ++ CPlayerDesc (Cu6mPlayer::factory, "Ultima 6 Music", ".m\0"), ++ CPlayerDesc (CrolPlayer::factory, "Adlib Visual Composer", ".rol\0"), ++ CPlayerDesc (CxsmPlayer::factory, "eXtra Simple Music", ".xsm\0"), ++ CPlayerDesc (CdroPlayer::factory, "DOSBox Raw OPL v0.1", ".dro\0"), ++ CPlayerDesc (Cdro2Player::factory, "DOSBox Raw OPL v2.0", ".dro\0"), ++ CPlayerDesc (CmscPlayer::factory, "Adlib MSC Player", ".msc\0"), ++ CPlayerDesc (CrixPlayer::factory, "Softstar RIX OPL Music", ".rix\0"), ++ CPlayerDesc (CadlPlayer::factory, "Westwood ADL", ".adl\0"), ++ CPlayerDesc (CjbmPlayer::factory, "Johannes Bjerregaard", ".jbm\0"), ++ CPlayerDesc () ++ }; ++ static CPlayers players = CAdPlug::init_players(_allplayers); ++ return players; ++} ++ + CAdPlugDatabase * + CAdPlug::database = 0; + +diff -Nur audacious-plugins-2.4.3-orig/src/adplug/core/adplug.h audacious-plugins-2.4.3/src/adplug/core/adplug.h +--- audacious-plugins-2.4.3-orig/src/adplug/core/adplug.h 2011-01-12 12:13:26.000000000 +0100 ++++ audacious-plugins-2.4.3/src/adplug/core/adplug.h 2011-02-17 01:39:53.283974109 +0100 +@@ -35,10 +35,10 @@ + friend CPlayer::CPlayer(Copl *newopl); + + public: +- static const CPlayers players; ++ static const CPlayers& getPlayers(); + + static CPlayer *factory(VFSFile *fd, Copl *opl, +- const CPlayers &pl = players, ++ const CPlayers &pl = getPlayers(), + const CFileProvider &fp = CProvider_Filesystem()); + + static void set_database(CAdPlugDatabase *db); +@@ -47,7 +47,6 @@ + + private: + static CAdPlugDatabase *database; +- static const CPlayerDesc allplayers[]; + + static const CPlayers &init_players(const CPlayerDesc pd[]); + }; diff --git a/audacious-plugins.spec b/audacious-plugins.spec index 6b79e34..e85687e 100644 --- a/audacious-plugins.spec +++ b/audacious-plugins.spec @@ -10,7 +10,7 @@ Requires: audacious >= %{aud_ver} Name: audacious-plugins Version: 2.4.3 -Release: 7%{?dist} +Release: 8%{?dist} Summary: Plugins for the Audacious audio player Group: Applications/Multimedia URL: http://audacious-media-player.org/ @@ -33,6 +33,8 @@ Patch2: audacious-plugins-2.4.3-adplug-invalid.patch # post-2.4.3 Patch3: audacious-plugins-2.4.3-psf-AUD-289.patch Patch4: audacious-plugins-2.4.3-mtp-AUDPLUG-323.patch +# C++ static init order mess (bz 669889), reported as AUDPLUG-331 +Patch5: audacious-plugins-2.4.3-adplug-static-init-mess.patch # Patch8: audacious-plugins-2.4.2-libnotify07.patch @@ -157,6 +159,7 @@ providers may build it with libsidplay 2 instead. %patch2 -p1 -b .adplug-invalid %patch3 -p1 -b .psf-fix %patch4 -p1 -b .mtp-fix +%patch5 -p1 -b .adplug-static-init-mess %if 0%{?fedora} > 14 %patch8 -p1 -b .libnotify07 %endif @@ -258,6 +261,9 @@ update-desktop-database &> /dev/null || : %changelog +* Wed Feb 16 2011 Michael Schwendt - 2.4.3-8 +- Fix C++ static member init mess in adplug plugin (#669889). + * Fri Feb 4 2011 Michael Schwendt - 2.4.3-7 - Enhance the audacious(plugin-api) stuff in the spec file and apply it to all subpackages.