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
commit3c6b6470428d6f8029c3d3a9fb15613b1d3db93b (patch)
tree5d67932e93becb92d03cda95c84769111861f196 /media-sound
parentUpdate metadata.xml to list myself as primary maintainer. (diff)
downloadgentoo-2-3c6b6470428d6f8029c3d3a9fb15613b1d3db93b.tar.gz
gentoo-2-3c6b6470428d6f8029c3d3a9fb15613b1d3db93b.tar.bz2
gentoo-2-3c6b6470428d6f8029c3d3a9fb15613b1d3db93b.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.
(Portage version: 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/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
5 files changed, 487 insertions, 1 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/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>