summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArun Raghavan <ford_prefect@gentoo.org>2010-03-17 18:58:33 +0000
committerArun Raghavan <ford_prefect@gentoo.org>2010-03-17 18:58:33 +0000
commit0fceffc735f7adc08f4f1bc9dfc5af9ba61961c0 (patch)
tree0422e3dfadbfcb6f0df0f5400731a0c48bfbf45c /media-sound
parentUpdate metadata.xml to list myself as primary maintainer. (diff)
downloadhistorical-0fceffc735f7adc08f4f1bc9dfc5af9ba61961c0.tar.gz
historical-0fceffc735f7adc08f4f1bc9dfc5af9ba61961c0.tar.bz2
historical-0fceffc735f7adc08f4f1bc9dfc5af9ba61961c0.zip
Bump to 1.5.5 (1.6 RC1). Drops some flags in favour of depending on gst-plugins-meta, makes CD ripping support optional, and adds USE-flag controlled support for the Youtube plugin.
Package-Manager: portage-2.2_rc67/cvs/Linux x86_64
Diffstat (limited to 'media-sound')
-rw-r--r--media-sound/banshee/ChangeLog11
-rw-r--r--media-sound/banshee/Manifest8
-rw-r--r--media-sound/banshee/banshee-1.5.5.ebuild145
-rw-r--r--media-sound/banshee/files/banshee-1.5.5-volume-reset-fix.patch268
-rw-r--r--media-sound/banshee/files/banshee-1.5.5-volume-slider-fix.patch62
-rw-r--r--media-sound/banshee/metadata.xml2
6 files changed, 493 insertions, 3 deletions
diff --git a/media-sound/banshee/ChangeLog b/media-sound/banshee/ChangeLog
index c805192b628e..37c11161ac9d 100644
--- a/media-sound/banshee/ChangeLog
+++ b/media-sound/banshee/ChangeLog
@@ -1,6 +1,15 @@
# ChangeLog for media-sound/banshee
# Copyright 1999-2010 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/media-sound/banshee/ChangeLog,v 1.107 2010/02/25 06:22:21 ford_prefect Exp $
+# $Header: /var/cvsroot/gentoo-x86/media-sound/banshee/ChangeLog,v 1.108 2010/03/17 18:58:33 ford_prefect Exp $
+
+*banshee-1.5.5 (17 Mar 2010)
+
+ 17 Mar 2010; Arun Raghavan <ford_prefect@gentoo.org>
+ +banshee-1.5.5.ebuild, +files/banshee-1.5.5-volume-reset-fix.patch,
+ +files/banshee-1.5.5-volume-slider-fix.patch, metadata.xml:
+ Bump to 1.5.5 (1.6 RC1). Drops some flags in favour of depending on
+ gst-plugins-meta, makes CD ripping support optional, and adds USE-flag
+ controlled support for the Youtube plugin.
25 Feb 2010; Arun Raghavan <ford_prefect@gentoo.org>
-banshee-1.5.0.ebuild, -banshee-1.5.2.ebuild:
diff --git a/media-sound/banshee/Manifest b/media-sound/banshee/Manifest
index 4bc0c7d2c4a4..e4e1c4b9b569 100644
--- a/media-sound/banshee/Manifest
+++ b/media-sound/banshee/Manifest
@@ -1,13 +1,17 @@
AUX banshee-1.4.2-metadata-writefail.patch 5701 RMD160 3985a02b7f4e9013951d75090051ff4d8991916d SHA1 28ab88d8eb12801d4b2a2a9186c71c2904e88525 SHA256 179608931a113a660965689cdf077e066952b0c125c9648befbbe3bd07c13399
AUX banshee-1.4.3-CVE-2009-1175.patch 2985 RMD160 c149b8783431a4673b2f2a330a2f5059f7a210d0 SHA1 78841e5dce317fb3e16cc10f4e1b9b6f7ac2b825 SHA256 d8678cadb3c62f809bb977ad2563877d05c33a86ff4c315fe9d89d2c80c82feb
+AUX banshee-1.5.5-volume-reset-fix.patch 11938 RMD160 837021473c02ca1af22e04a8579809feb5aaa373 SHA1 aef7dbdb401f1d1d0b7081a592d5d2eccda36897 SHA256 d4fd898914b39f0737ff9b5dbc9d92da9fe2241110d3ce0ca71097f1fafb48b9
+AUX banshee-1.5.5-volume-slider-fix.patch 2453 RMD160 6b42eed1e477f5fae8d14c0f5d93a5865d14c951 SHA1 d63f7c1fe7e90726aaa4773c2ebb8b0185062e2e SHA256 84c97798990d42094bafbb1ef73d5275ff113565c5699d90ab4095aa5e00469f
DIST banshee-1-1.4.3.tar.bz2 2415388 RMD160 06a76574efaa6bc0740d5c656dcbb2334ee84e73 SHA1 3b137c1efe3eb8881da2e86210104eb292a7c560 SHA256 8abe54b17c6755b7b6f617c8470ba5e84c94a96b86af9aac1031080646e142d1
DIST banshee-1-1.5.3.tar.bz2 2614970 RMD160 aba5bfb9bfdabd4941ffb50f7bce2c8beec92910 SHA1 9d1c40a59b7a05e42ed4c2270acf2d58797e6765 SHA256 c4cebcde2d30e460152da881d64e2f890576b598961be63f1bd63a6d28de0b03
DIST banshee-1-1.5.4.tar.bz2 2951597 RMD160 cdcdcf756f1c7aa93f679aa9755400bee4a1107e SHA1 97a8bac07484de663911b81a1ceed29049173c23 SHA256 c22a915b85dbdd3e4508991f2ace82aa09052a687abab51d69b1b64bf7327cc7
+DIST banshee-1-1.5.5.tar.bz2 3177710 RMD160 dcf594d59d9e205fce85b734a5b92ac76fbe945c SHA1 6fb898810f3a6d03f22725379e180ee311d2caee SHA256 ffc3f548dca8f36f8627074dc67c624c87d7ca299082fc6967d493a63538e475
DIST banshee-1.4.2-musicbrainz-fix.patch.bz2 14078 RMD160 185e306fe4705c2d317b6dbbaa11d69b4c52b4ca SHA1 a98a56346c8a3134959c3533ecae72a3979ef392 SHA256 d238408dce5eec001c0ff77dec3097c43414c4d897b456a45451a0a7e8975dbb
EBUILD banshee-1.4.3-r1.ebuild 3265 RMD160 c6b48dd5d4f470e22e810924216f1d771aafa1f1 SHA1 9a8eff7d036cf6621c581caef3136a0d97fde787 SHA256 d9935590985749db49562b4d41cf2f25babe332ea896fe152f58bc8eac7dc39f
EBUILD banshee-1.4.3-r2.ebuild 3309 RMD160 2de0e84578b83272f55db8dec9454edbbd0b5f0e SHA1 0f77c4b424e8db1bd3f33d8abe7992e30b0a26aa SHA256 5d03b328cade2d5ea824c58a56346e10e756a8c3f652a71f61236a2425105447
EBUILD banshee-1.4.3.ebuild 3699 RMD160 a4ecab4d4a883a7833e2bbc29267cbea6d6834f1 SHA1 8764442322ad093ad0d39f5ba73716bcec4693c7 SHA256 d0c38cd48b34331bfa099699444df2c296dc2db4c1231367123f38acfeda40e5
EBUILD banshee-1.5.3.ebuild 3269 RMD160 1d31f627b9a236253d88f2a17e2147a8c7c48901 SHA1 01c545d70ed52b2c3e7af338fcbc73e913be63a1 SHA256 d90becc1a7a759923e6bf361d4794aefb355216a582be3ac3898605e03a64c45
EBUILD banshee-1.5.4.ebuild 3394 RMD160 e8e009937b258427da06fb82af43a261d989d3e4 SHA1 f082ebd2f0f3c02742c2dbad325c8858c2d5c6d4 SHA256 4953bfa6735a36a8b20172a9968a91ee52d583a225e9c45a89dd24189a1df25d
-MISC ChangeLog 19830 RMD160 1ab5c7022ebdc99f571074a921e9b856b5ff0db1 SHA1 62877344a165c6543e6563c3cf754271b480b1e6 SHA256 c7edfe5a95fad62246f67c036b412e61a37ee1b46dc8bdab74661ba245f6e642
-MISC metadata.xml 554 RMD160 75a483d10ed33a9ab44171dd9a0adadf8300eeba SHA1 823c1283251e53b1c87e595d1df2edfcbee36685 SHA256 a3e3af55e591e362d5c9be0116e03579b095c9829de22edbf5dc73ed2f4290f9
+EBUILD banshee-1.5.5.ebuild 3708 RMD160 2d3791dbce3bdc36c653540e3b3d710950670b73 SHA1 05ee24cb53b4b3297245c121b3e65de2d37cb089 SHA256 5fb716bb702e6e73a59ad663396a014eb1a90855c837c594946e184b470c9695
+MISC ChangeLog 20236 RMD160 f81cfc8790bb1f0db60e6af89f8b482c9daa22b8 SHA1 d1a256b79eeb8f623aa5f93c708cf7ef5c511c3d SHA256 d3f995d2fc7f135989a85f0d28e487fec47e5062e3cfc13b8ec5dce8f1cd5f21
+MISC metadata.xml 663 RMD160 0abe86be9299e6f220ee9fb2fd8956b5ae1cdc3f SHA1 d49b527c1a04f358ecd1ea6573165f13b1088f04 SHA256 84615a80e41486fd2a9213d5a6212459187be242e97ebd73833c268661acc976
diff --git a/media-sound/banshee/banshee-1.5.5.ebuild b/media-sound/banshee/banshee-1.5.5.ebuild
new file mode 100644
index 000000000000..29fe426c0398
--- /dev/null
+++ b/media-sound/banshee/banshee-1.5.5.ebuild
@@ -0,0 +1,145 @@
+# Copyright 1999-2010 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/media-sound/banshee/banshee-1.5.5.ebuild,v 1.1 2010/03/17 18:58:33 ford_prefect Exp $
+
+EAPI=2
+
+inherit eutils mono gnome2-utils fdo-mime versionator
+
+GVER=0.10.7
+
+DESCRIPTION="Import, organize, play, and share your music using a simple and powerful interface."
+HOMEPAGE="http://banshee-project.org"
+
+#BANSHEE_V2=$(get_version_component_range 2)
+#[[ $((${BANSHEE_V2} % 2)) -eq 0 ]] && RELTYPE=stable || RELTYPE=unstable
+#SRC_URI="http://download.banshee-project.org/${PN}/${RELTYPE}/${PV}/${PN}-1-${PV}.tar.bz2"
+SRC_URI="http://download.banshee-project.org/${PN}/stable/${PV}/${PN}-1-${PV}.tar.bz2"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+IUSE="+aac +cdda boo daap doc +encode ipod karma mtp podcast test wikipedia youtube"
+
+RDEPEND=">=dev-lang/mono-2.4.3
+ gnome-base/gnome-settings-daemon
+ x11-themes/gnome-icon-theme
+ sys-apps/dbus
+ >=dev-dotnet/gtk-sharp-2.12
+ >=dev-dotnet/glade-sharp-2.12
+ >=dev-dotnet/gconf-sharp-2.24.0
+ >=dev-dotnet/gnome-sharp-2.24.0
+ >=dev-dotnet/notify-sharp-0.4.0_pre20080912-r1
+ >=media-libs/gstreamer-0.10.21-r3
+ >=media-libs/gst-plugins-bad-${GVER}
+ >=media-libs/gst-plugins-good-${GVER}
+ >=media-libs/gst-plugins-ugly-${GVER}
+ >=media-plugins/gst-plugins-meta-0.10-r2:0.10
+ >=media-plugins/gst-plugins-gnomevfs-${GVER}
+ >=media-plugins/gst-plugins-gconf-${GVER}
+ cdda? (
+ || (
+ >=media-plugins/gst-plugins-cdparanoia-${GVER}
+ >=media-plugins/gst-plugins-cdio-${GVER}
+ )
+ )
+ media-libs/musicbrainz:1
+ >=dev-dotnet/dbus-glib-sharp-0.4.1
+ >=dev-dotnet/dbus-sharp-0.6.1a
+ >=dev-dotnet/mono-addins-0.4[gtk]
+ >=dev-dotnet/taglib-sharp-2.0.3.5
+ >=dev-db/sqlite-3.4
+ karma? ( >=media-libs/libkarma-0.1.0-r1 )
+ aac? ( >=media-plugins/gst-plugins-faad-${GVER} )
+ boo? (
+ >=dev-lang/boo-0.8.1
+ )
+ daap? (
+ >=dev-dotnet/mono-zeroconf-0.8.0-r1
+ )
+ doc? (
+ virtual/monodoc
+ )
+ encode? (
+ >=media-plugins/gst-plugins-lame-${GVER}
+ >=media-plugins/gst-plugins-taglib-${GVER}
+ )
+ ipod? (
+ >=dev-dotnet/ipod-sharp-0.8.5
+ )
+ mtp? (
+ media-libs/libmtp
+ )
+ wikipedia? (
+ >=dev-dotnet/webkit-sharp-0.2
+ )
+ youtube? (
+ >=dev-dotnet/google-gdata-sharp-1.4
+ )"
+
+DEPEND="${RDEPEND}
+ dev-util/pkgconfig"
+
+DOCS="AUTHORS ChangeLog HACKING NEWS README"
+
+S=${WORKDIR}/${PN}-1-${PV}
+
+src_prepare() {
+ # from upstream: git diff a76aaf ae843d
+ epatch "${FILESDIR}/${P}-volume-reset-fix.patch"
+ # submitted upstream: bug #613177
+ epatch "${FILESDIR}/${P}-volume-slider-fix.patch"
+}
+
+src_configure() {
+ # Disable the gapless plugin till we have >=gst-plugins-base-0.10.25.2
+ local myconf="--disable-dependency-tracking --disable-static
+ --enable-gnome --enable-schemas-install
+ --with-gconf-schema-file-dir=/etc/gconf/schemas
+ --with-vendor-build-id=Gentoo/${PN}/${PVR}
+ --disable-gapless-playback
+ --disable-torrent
+ --disable-shave"
+
+ econf \
+ $(use_enable doc docs) \
+ $(use_enable boo) \
+ $(use_enable mtp) \
+ $(use_enable daap) \
+ $(use_enable ipod) \
+ $(use_enable podcast) \
+ $(use_enable karma) \
+ $(use_enable wikipedia webkit) \
+ $(use_enable youtube gdata) \
+ ${myconf}
+}
+
+src_compile() {
+ emake MCS=/usr/bin/gmcs
+}
+
+src_install() {
+ emake DESTDIR="${D}" install || die "emake install efailed"
+ find "${D}" -name '*.la' -delete
+}
+
+pkg_preinst() {
+ gnome2_icon_savelist
+}
+
+pkg_postinst() {
+ ewarn
+ ewarn "If ${PN} doesn't play some format, please check your"
+ ewarn "USE flags on media-plugins/gst-plugins-meta"
+ ewarn
+
+ fdo-mime_desktop_database_update
+ fdo-mime_mime_database_update
+ gnome2_icon_cache_update
+}
+
+pkg_postrm() {
+ fdo-mime_desktop_database_update
+ fdo-mime_mime_database_update
+ gnome2_icon_cache_update
+}
diff --git a/media-sound/banshee/files/banshee-1.5.5-volume-reset-fix.patch b/media-sound/banshee/files/banshee-1.5.5-volume-reset-fix.patch
new file mode 100644
index 000000000000..3053c870ae35
--- /dev/null
+++ b/media-sound/banshee/files/banshee-1.5.5-volume-reset-fix.patch
@@ -0,0 +1,268 @@
+diff --git a/libbanshee/banshee-player-pipeline.c b/libbanshee/banshee-player-pipeline.c
+index 376300a..90b968d 100644
+--- a/libbanshee/banshee-player-pipeline.c
++++ b/libbanshee/banshee-player-pipeline.c
+@@ -234,6 +234,19 @@ static void bp_about_to_finish_callback (GstElement *playbin, BansheePlayer *pla
+ }
+ #endif //ENABLE_GAPLESS
+
++static void bp_volume_changed_callback (GstElement *playbin, GParamSpec *spec, BansheePlayer *player)
++{
++ g_return_if_fail (IS_BANSHEE_PLAYER (player));
++ g_return_if_fail (GST_IS_ELEMENT (playbin));
++
++ gdouble volume;
++ g_object_get (G_OBJECT (playbin), "volume", &volume, NULL);
++
++ if (player->volume_changed_cb != NULL) {
++ player->volume_changed_cb (player, volume);
++ }
++}
++
+ // ---------------------------------------------------------------------------
+ // Internal Functions
+ // ---------------------------------------------------------------------------
+@@ -262,6 +275,8 @@ _bp_pipeline_construct (BansheePlayer *player)
+
+ g_return_val_if_fail (player->playbin != NULL, FALSE);
+
++ g_signal_connect (player->playbin, "notify::volume", G_CALLBACK (bp_volume_changed_callback), player);
++
+ // Try to find an audio sink, prefer gconf, which typically is set to auto these days,
+ // fall back on auto, which should work on windows, and as a last ditch, try alsa
+ audiosink = gst_element_factory_make ("gconfaudiosink", "audiosink");
+diff --git a/libbanshee/banshee-player-private.h b/libbanshee/banshee-player-private.h
+index 1edd375..68c6bf4 100644
+--- a/libbanshee/banshee-player-private.h
++++ b/libbanshee/banshee-player-private.h
+@@ -79,6 +79,7 @@ typedef void (* BansheePlayerVisDataCallback) (BansheePlayer *player, gint
+ typedef void (* BansheePlayerNextTrackStartingCallback) (BansheePlayer *player);
+ typedef void (* BansheePlayerAboutToFinishCallback) (BansheePlayer *player);
+ typedef GstElement * (* BansheePlayerVideoPipelineSetupCallback) (BansheePlayer *player, GstBus *bus);
++typedef void (* BansheePlayerVolumeChangedCallback) (BansheePlayer *player, gdouble new_volume);
+
+ typedef enum {
+ BP_VIDEO_DISPLAY_CONTEXT_UNSUPPORTED = 0,
+@@ -98,6 +99,7 @@ struct BansheePlayer {
+ BansheePlayerNextTrackStartingCallback next_track_starting_cb;
+ BansheePlayerAboutToFinishCallback about_to_finish_cb;
+ BansheePlayerVideoPipelineSetupCallback video_pipeline_setup_cb;
++ BansheePlayerVolumeChangedCallback volume_changed_cb;
+
+ // Pipeline Elements
+ GstElement *playbin;
+@@ -113,7 +115,6 @@ struct BansheePlayer {
+ gboolean rgvolume_in_pipeline;
+
+ gint equalizer_status;
+- gdouble current_volume;
+
+ // Pipeline/Playback State
+ GMutex *mutex;
+diff --git a/libbanshee/banshee-player-replaygain.c b/libbanshee/banshee-player-replaygain.c
+index 238333b..8c870f1 100644
+--- a/libbanshee/banshee-player-replaygain.c
++++ b/libbanshee/banshee-player-replaygain.c
+@@ -165,12 +165,14 @@ void _bp_rgvolume_print_volume(BansheePlayer *player)
+ g_return_if_fail (IS_BANSHEE_PLAYER (player));
+ if (player->replaygain_enabled && (player->rgvolume != NULL)) {
+ gdouble scale;
++ gdouble volume;
+
+ g_object_get (G_OBJECT (player->rgvolume), "result-gain", &scale, NULL);
++ g_object_get (G_OBJECT (player->playbin), "volume", &volume, NULL);
+
+ bp_debug ("scaled volume: %.2f (ReplayGain) * %.2f (User) = %.2f",
+- bp_replaygain_db_to_linear (scale), player->current_volume,
+- bp_replaygain_db_to_linear (scale) * player->current_volume);
++ bp_replaygain_db_to_linear (scale), volume,
++ bp_replaygain_db_to_linear (scale) * volume);
+ }
+ }
+
+diff --git a/libbanshee/banshee-player.c b/libbanshee/banshee-player.c
+index 2c0cfb0..28266aa 100644
+--- a/libbanshee/banshee-player.c
++++ b/libbanshee/banshee-player.c
+@@ -299,8 +299,7 @@ bp_set_volume (BansheePlayer *player, gdouble volume)
+ g_return_if_fail (IS_BANSHEE_PLAYER (player));
+ g_return_if_fail (GST_IS_ELEMENT (player->playbin));
+
+- player->current_volume = CLAMP (volume, 0.0, 1.0);
+- g_object_set (player->playbin, "volume", player->current_volume, NULL);
++ g_object_set (player->playbin, "volume", CLAMP (volume, 0.0, 1.0), NULL);
+ _bp_rgvolume_print_volume (player);
+ }
+
+@@ -308,7 +307,16 @@ P_INVOKE gdouble
+ bp_get_volume (BansheePlayer *player)
+ {
+ g_return_val_if_fail (IS_BANSHEE_PLAYER (player), 0.0);
+- return player->current_volume;
++ g_return_val_if_fail (GST_IS_ELEMENT (player->playbin), 0.0);
++ gdouble volume;
++ g_object_get (player->playbin, "volume", &volume, NULL);
++ return volume;
++}
++
++P_INVOKE void
++bp_set_volume_changed_callback (BansheePlayer *player, BansheePlayerVolumeChangedCallback cb)
++{
++ SET_CALLBACK (volume_changed_cb);
+ }
+
+ P_INVOKE gboolean
+diff --git a/src/Backends/Banshee.GStreamer/Banshee.GStreamer/PlayerEngine.cs b/src/Backends/Banshee.GStreamer/Banshee.GStreamer/PlayerEngine.cs
+index 1a48c63..3d203bd 100644
+--- a/src/Backends/Banshee.GStreamer/Banshee.GStreamer/PlayerEngine.cs
++++ b/src/Backends/Banshee.GStreamer/Banshee.GStreamer/PlayerEngine.cs
+@@ -61,6 +61,7 @@ namespace Banshee.GStreamer
+ internal delegate void BansheePlayerNextTrackStartingCallback (IntPtr player);
+ internal delegate void BansheePlayerAboutToFinishCallback (IntPtr player);
+ internal delegate IntPtr VideoPipelineSetupHandler (IntPtr player, IntPtr bus);
++ internal delegate void BansheePlayerVolumeChangedCallback (IntPtr player, double newVolume);
+
+ internal delegate void GstTaggerTagFoundCallback (IntPtr player, string tagName, ref GLib.Value value);
+
+@@ -76,7 +77,6 @@ namespace Banshee.GStreamer
+ private uint GST_STREAM_ERROR = 0;
+
+ private HandleRef handle;
+- private bool initialized;
+
+ private BansheePlayerEosCallback eos_callback;
+ private BansheePlayerErrorCallback error_callback;
+@@ -88,12 +88,12 @@ namespace Banshee.GStreamer
+ private GstTaggerTagFoundCallback tag_found_callback;
+ private BansheePlayerNextTrackStartingCallback next_track_starting_callback;
+ private BansheePlayerAboutToFinishCallback about_to_finish_callback;
++ private BansheePlayerVolumeChangedCallback volume_changed_callback;
+
+ private bool next_track_pending;
+ private SafeUri pending_uri;
+
+ private bool buffering_finished;
+- private int pending_volume = -1;
+ private bool xid_is_set = false;
+
+ private bool gapless_enabled;
+@@ -152,6 +152,7 @@ namespace Banshee.GStreamer
+ tag_found_callback = new GstTaggerTagFoundCallback (OnTagFound);
+ next_track_starting_callback = new BansheePlayerNextTrackStartingCallback (OnNextTrackStarting);
+ about_to_finish_callback = new BansheePlayerAboutToFinishCallback (OnAboutToFinish);
++ volume_changed_callback = new BansheePlayerVolumeChangedCallback (OnVolumeChanged);
+ bp_set_eos_callback (handle, eos_callback);
+ #if !WIN32
+ bp_set_iterate_callback (handle, iterate_callback);
+@@ -162,6 +163,7 @@ namespace Banshee.GStreamer
+ bp_set_tag_found_callback (handle, tag_found_callback);
+ bp_set_next_track_starting_callback (handle, next_track_starting_callback);
+ bp_set_video_pipeline_setup_callback (handle, video_pipeline_setup_callback);
++ bp_set_volume_changed_callback (handle, volume_changed_callback);
+
+ next_track_set = new EventWaitHandle (false, EventResetMode.ManualReset);
+ }
+@@ -174,12 +176,9 @@ namespace Banshee.GStreamer
+ throw new ApplicationException (Catalog.GetString ("Could not initialize GStreamer library"));
+ }
+
+- initialized = true;
+ OnStateChanged (PlayerState.Ready);
+
+- if (pending_volume >= 0) {
+- Volume = (ushort)pending_volume;
+- }
++ Volume = (ushort)PlayerEngineService.VolumeSchema.Get ();
+
+ InstallPreferences ();
+ ReplayGainEnabled = ReplayGainEnabledSchema.Get ();
+@@ -480,6 +479,11 @@ namespace Banshee.GStreamer
+ }
+ }
+
++ private void OnVolumeChanged (IntPtr player, double newVolume)
++ {
++ OnEventChanged (PlayerEvent.Volume);
++ }
++
+ private static StreamTag ProcessNativeTagResult (string tagName, ref GLib.Value valueRaw)
+ {
+ if (tagName == String.Empty || tagName == null) {
+@@ -508,11 +512,6 @@ namespace Banshee.GStreamer
+ public override ushort Volume {
+ get { return (ushort)Math.Round (bp_get_volume (handle) * 100.0); }
+ set {
+- if (!initialized) {
+- pending_volume = value;
+- return;
+- }
+-
+ bp_set_volume (handle, value / 100.0);
+ OnEventChanged (PlayerEvent.Volume);
+ }
+@@ -815,6 +814,10 @@ namespace Banshee.GStreamer
+ private static extern double bp_get_volume (HandleRef player);
+
+ [DllImport ("libbanshee.dll")]
++ private static extern void bp_set_volume_changed_callback (HandleRef player,
++ BansheePlayerVolumeChangedCallback cb);
++
++ [DllImport ("libbanshee.dll")]
+ private static extern bool bp_can_seek (HandleRef player);
+
+ [DllImport ("libbanshee.dll")]
+diff --git a/src/Core/Banshee.Services/Banshee.MediaEngine/PlayerEngineService.cs b/src/Core/Banshee.Services/Banshee.MediaEngine/PlayerEngineService.cs
+index 1d46a58..7e1c7f1 100644
+--- a/src/Core/Banshee.Services/Banshee.MediaEngine/PlayerEngineService.cs
++++ b/src/Core/Banshee.Services/Banshee.MediaEngine/PlayerEngineService.cs
+@@ -196,7 +196,6 @@ namespace Banshee.MediaEngine
+ private void HandleStateChange (PlayerEventStateChangeArgs args)
+ {
+ if (args.Current == PlayerState.Loaded && CurrentTrack != null) {
+- active_engine.Volume = (ushort) VolumeSchema.Get ();
+ MetadataService.Instance.Lookup (CurrentTrack);
+ } else if (args.Current == PlayerState.Ready) {
+ // Enable our preferred equalizer if it exists and was enabled last time.
+@@ -535,8 +534,8 @@ namespace Banshee.MediaEngine
+
+ private void CheckPending ()
+ {
+- if(pending_engine != null && pending_engine != active_engine) {
+- if(active_engine.CurrentState == PlayerState.Idle) {
++ if (pending_engine != null && pending_engine != active_engine) {
++ if (active_engine.CurrentState == PlayerState.Idle) {
+ Close ();
+ }
+
+diff --git a/src/Core/Banshee.ThickClient/Banshee.Gui.Widgets/ConnectedVolumeButton.cs b/src/Core/Banshee.ThickClient/Banshee.Gui.Widgets/ConnectedVolumeButton.cs
+index c34ddf4..f654244 100644
+--- a/src/Core/Banshee.ThickClient/Banshee.Gui.Widgets/ConnectedVolumeButton.cs
++++ b/src/Core/Banshee.ThickClient/Banshee.Gui.Widgets/ConnectedVolumeButton.cs
+@@ -37,9 +37,11 @@ namespace Banshee.Gui.Widgets
+ {
+ private bool emit_lock = false;
+
+- public ConnectedVolumeButton () : base ()
++ public ConnectedVolumeButton () : base()
+ {
++ emit_lock = true;
+ Volume = PlayerEngineService.VolumeSchema.Get ();
++ emit_lock = false;
+ ServiceManager.PlayerEngine.ConnectEvent (OnPlayerEvent, PlayerEvent.Volume);
+ }
+
+@@ -57,12 +59,13 @@ namespace Banshee.Gui.Widgets
+
+ protected override void OnVolumeChanged ()
+ {
++ PlayerEngineService.VolumeSchema.Set (Volume);
++
+ if (emit_lock) {
+ return;
+ }
+
+ ServiceManager.PlayerEngine.Volume = (ushort)Volume;
+- PlayerEngineService.VolumeSchema.Set(Volume);
+
+ base.OnVolumeChanged ();
+ }
diff --git a/media-sound/banshee/files/banshee-1.5.5-volume-slider-fix.patch b/media-sound/banshee/files/banshee-1.5.5-volume-slider-fix.patch
new file mode 100644
index 000000000000..ffc5dec4a8a1
--- /dev/null
+++ b/media-sound/banshee/files/banshee-1.5.5-volume-slider-fix.patch
@@ -0,0 +1,62 @@
+From 6c51f4e0adb8ca3a52f478553d10887c0eb256ec Mon Sep 17 00:00:00 2001
+From: Arun Raghavan <arun.raghavan@collabora.co.uk>
+Date: Wed, 17 Mar 2010 17:41:34 +0000
+Subject: [PATCH] [libbanshee] Make the volume slider smooth with PulseAudio
+
+PulseAudio maps linear stream volumes to "actual" volumes as a cubic
+function. This change reflects that in the volume slider, making it feel
+more natural. This also makes the slider values correspond to other
+apps, such as GNOME volume preferences.
+
+Ref: https://tango.0pointer.de/pipermail/pulseaudio-discuss/2009-May/003898.html
+---
+ libbanshee/banshee-player.c | 17 +++++++++++++++++
+ 1 files changed, 17 insertions(+), 0 deletions(-)
+
+diff --git a/libbanshee/banshee-player.c b/libbanshee/banshee-player.c
+index 28266aa..d304ce8 100644
+--- a/libbanshee/banshee-player.c
++++ b/libbanshee/banshee-player.c
+@@ -31,6 +31,9 @@
+ #include "banshee-player-cdda.h"
+ #include "banshee-player-missing-elements.h"
+ #include "banshee-player-replaygain.h"
++#if GST_CHECK_VERSION(0,10,25)
++#include <gst/interfaces/streamvolume.h>
++#endif
+
+ // ---------------------------------------------------------------------------
+ // Private Functions
+@@ -299,7 +302,14 @@ bp_set_volume (BansheePlayer *player, gdouble volume)
+ g_return_if_fail (IS_BANSHEE_PLAYER (player));
+ g_return_if_fail (GST_IS_ELEMENT (player->playbin));
+
++#if GST_CHECK_VERSION(0,10,25)
++ if (gst_element_implements_interface (player->playbin, GST_TYPE_STREAM_VOLUME))
++ gst_stream_volume_set_volume (GST_STREAM_VOLUME (player->playbin), GST_STREAM_VOLUME_FORMAT_CUBIC, volume);
++ else
++ g_object_set (player->playbin, "volume", CLAMP (volume, 0.0, 1.0), NULL);
++#else
+ g_object_set (player->playbin, "volume", CLAMP (volume, 0.0, 1.0), NULL);
++#endif
+ _bp_rgvolume_print_volume (player);
+ }
+
+@@ -309,7 +319,14 @@ bp_get_volume (BansheePlayer *player)
+ g_return_val_if_fail (IS_BANSHEE_PLAYER (player), 0.0);
+ g_return_val_if_fail (GST_IS_ELEMENT (player->playbin), 0.0);
+ gdouble volume;
++#if GST_CHECK_VERSION(0,10,25)
++ if (gst_element_implements_interface (player->playbin, GST_TYPE_STREAM_VOLUME))
++ volume = gst_stream_volume_get_volume (GST_STREAM_VOLUME (player->playbin), GST_STREAM_VOLUME_FORMAT_CUBIC);
++ else
++ g_object_get (player->playbin, "volume", &volume, NULL);
++#else
+ g_object_get (player->playbin, "volume", &volume, NULL);
++#endif
+ return volume;
+ }
+
+--
+1.7.0.2
+
diff --git a/media-sound/banshee/metadata.xml b/media-sound/banshee/metadata.xml
index 048f56ab03a7..935f6348bc60 100644
--- a/media-sound/banshee/metadata.xml
+++ b/media-sound/banshee/metadata.xml
@@ -5,10 +5,12 @@
<herd>gstreamer</herd>
<use>
<flag name="boo">Use external Boo instead of the bundled one</flag>
+ <flag name="cdda">Build with audio CD support</flag>
<flag name="daap">Build with Daap support</flag>
<flag name="karma">Build with karma support</flag>
<flag name="podcast">Build with podcasting support</flag>
<flag name="wikipedia">Enable the Wikipedia context pane (requires
<pkg>net-libs/webkit-gtk</pkg>)</flag>
+ <flag name="youtube">Enable the Youtube plugin</flag>
</use>
</pkgmetadata>