[banshee/gapless-ng: 17/836] [Banshee.GStreamer] Update CurrentTrack.LastPlayed before firing RequestNextTrack. This is needed to



commit cd25709d084e44e8fb9b3bafedd725220c8e2229
Author: Christopher James Halse Rogers <raof ubuntu com>
Date:   Mon Jul 20 14:47:27 2009 +1000

    [Banshee.GStreamer] Update CurrentTrack.LastPlayed before firing RequestNextTrack.
    This is needed to make Shuffle-by-* modes work with gapless, where we need to request the next track
    before the current track has finished (and had its playcount, lastplayed, etc updated).

 .../Banshee.GStreamer/PlayerEngine.cs              |   11 +++++++++++
 1 files changed, 11 insertions(+), 0 deletions(-)
---
diff --git a/src/Backends/Banshee.GStreamer/Banshee.GStreamer/PlayerEngine.cs b/src/Backends/Banshee.GStreamer/Banshee.GStreamer/PlayerEngine.cs
index 29ef0fd..73f2a0b 100644
--- a/src/Backends/Banshee.GStreamer/Banshee.GStreamer/PlayerEngine.cs
+++ b/src/Backends/Banshee.GStreamer/Banshee.GStreamer/PlayerEngine.cs
@@ -277,6 +277,17 @@ namespace Banshee.GStreamer
 
         private void OnAboutToFinish (IntPtr player)
         {
+            /*
+             * This is needed to make Shuffle-by-* work.
+             * Shuffle-by-* uses the LastPlayed field to determine what track in the grouping to play next.
+             * Therefore, we need to update this before requesting the next track.
+             *
+             * This will be overridden by IncrementLastPlayed () called by 
+             * PlaybackControllerService's EndOfStream handler.
+             */
+            CurrentTrack.LastPlayed = DateTime.Now;
+            CurrentTrack.Save ();
+            
             OnEventChanged (PlayerEvent.RequestNexttrack);
             // Gapless playback with Playbin2 requires that the about-to-finish callback does not return until
             // the next uri has been set.  Block here for a second or until the RequestNextTrack event has 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]