[banshee/gapless-ng: 14/836] [Banshee.PlayQueue] Handle userRequested=False in Next(). This makes gapless playback from the play
- From: Christopher James Halse Rogers <chrishr src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [banshee/gapless-ng: 14/836] [Banshee.PlayQueue] Handle userRequested=False in Next(). This makes gapless playback from the play
- Date: Thu, 25 Feb 2010 22:42:37 +0000 (UTC)
commit bb55095f08430516d7953d6dc5ffe34cf5d02c18
Author: Christopher James Halse Rogers <raof ubuntu com>
Date: Sun Jul 19 17:16:34 2009 +1000
[Banshee.PlayQueue] Handle userRequested=False in Next().
This makes gapless playback from the play queue work
.../Banshee.PlayQueue/PlayQueueSource.cs | 27 +++++++++++++++++---
1 files changed, 23 insertions(+), 4 deletions(-)
---
diff --git a/src/Extensions/Banshee.PlayQueue/Banshee.PlayQueue/PlayQueueSource.cs b/src/Extensions/Banshee.PlayQueue/Banshee.PlayQueue/PlayQueueSource.cs
index de2b889..ade81ee 100644
--- a/src/Extensions/Banshee.PlayQueue/Banshee.PlayQueue/PlayQueueSource.cs
+++ b/src/Extensions/Banshee.PlayQueue/Banshee.PlayQueue/PlayQueueSource.cs
@@ -243,19 +243,38 @@ namespace Banshee.PlayQueue
if (userRequested) {
RemovePlayingTrack ();
}
-
- if (Count == 0) {
+
+ bool stillPlaying = false;
+ if (ServiceManager.PlayerEngine.CurrentTrack != null) {
+ // AbsoluteUri seems a reasonable way of determining when two TrackInfos are the same
+ // I'm not sure if it's both necessary and sufficient, though.
+ stillPlaying =
+ ServiceManager.PlayerEngine.CurrentTrack.Uri.AbsoluteUri == TrackModel[0].Uri.AbsoluteUri;
+ }
+
+ if (Count == 0 || (stillPlaying && Count == 1)) {
ServiceManager.PlaybackController.Source = PriorSource;
if (was_playing) {
ServiceManager.PlaybackController.PriorTrack = prior_playback_track;
- ServiceManager.PlaybackController.Next (restart);
+ ServiceManager.PlaybackController.Next (restart, userRequested);
} else {
ServiceManager.PlayerEngine.Close ();
}
return true;
}
+
+ DatabaseTrackInfo next;
+ if (userRequested || !stillPlaying) {
+ next = (DatabaseTrackInfo)TrackModel[0];
+ } else {
+ next = (DatabaseTrackInfo)TrackModel[1];
+ }
- ServiceManager.PlayerEngine.OpenPlay ((DatabaseTrackInfo)TrackModel[0]);
+ if (userRequested) {
+ ServiceManager.PlayerEngine.OpenPlay (next);
+ } else {
+ ServiceManager.PlayerEngine.SetNextTrack (next);
+ }
return true;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]