[banshee] Don't increment skip counter when restarting current track (bgo#615219)



commit 8b781343709c6799566cf7c218f28ef094392a36
Author: Javon Harper <javon d harper gmail com>
Date:   Sun Apr 22 19:24:50 2012 -0400

    Don't increment skip counter when restarting current track (bgo#615219)
    
    Signed-off-by: Bertrand Lorentz <bertrand lorentz gmail com>

 .../Banshee.MediaEngine/PlayerEngineService.cs     |   10 ++++++++++
 .../PlaybackControllerService.cs                   |   11 ++++++-----
 .../Banshee.Gui/PlaybackActions.cs                 |    6 +-----
 3 files changed, 17 insertions(+), 10 deletions(-)
---
diff --git a/src/Core/Banshee.Services/Banshee.MediaEngine/PlayerEngineService.cs b/src/Core/Banshee.Services/Banshee.MediaEngine/PlayerEngineService.cs
index a0ed399..793b9cd 100644
--- a/src/Core/Banshee.Services/Banshee.MediaEngine/PlayerEngineService.cs
+++ b/src/Core/Banshee.Services/Banshee.MediaEngine/PlayerEngineService.cs
@@ -499,6 +499,16 @@ namespace Banshee.MediaEngine
             }
         }
 
+        public void RestartCurrentTrack ()
+        {
+            var track = CurrentTrack;
+            if (track != null) {
+                // Don't process the track as played through IncrementLastPlayed, just play it again
+                active_engine.Close (false);
+                OpenPlay (track);
+            }
+        }
+
         // For use by RadioTrackInfo
         // TODO remove this method once RadioTrackInfo playlist downloading/parsing logic moved here?
         internal void StartSynthesizeContacting (TrackInfo track)
diff --git a/src/Core/Banshee.Services/Banshee.PlaybackController/PlaybackControllerService.cs b/src/Core/Banshee.Services/Banshee.PlaybackController/PlaybackControllerService.cs
index 4fe49fb..19a649a 100644
--- a/src/Core/Banshee.Services/Banshee.PlaybackController/PlaybackControllerService.cs
+++ b/src/Core/Banshee.Services/Banshee.PlaybackController/PlaybackControllerService.cs
@@ -286,14 +286,15 @@ namespace Banshee.PlaybackController
             if (player_engine.Position < delay) {
                 Previous ();
             } else {
-                var track = player_engine.CurrentTrack;
-                if (track != null) {
-                    player_engine.Close ();
-                    player_engine.OpenPlay (track);
-                }
+                Restart ();
             }
         }
 
+        public void Restart ()
+        {
+            player_engine.RestartCurrentTrack ();
+        }
+
         bool IBasicPlaybackController.First ()
         {
             if (Source.Count > 0) {
diff --git a/src/Core/Banshee.ThickClient/Banshee.Gui/PlaybackActions.cs b/src/Core/Banshee.ThickClient/Banshee.Gui/PlaybackActions.cs
index 5c9844b..09d6139 100644
--- a/src/Core/Banshee.ThickClient/Banshee.Gui/PlaybackActions.cs
+++ b/src/Core/Banshee.ThickClient/Banshee.Gui/PlaybackActions.cs
@@ -242,11 +242,7 @@ namespace Banshee.Gui
 
         private void OnRestartSongAction (object o, EventArgs args)
         {
-            TrackInfo track = ServiceManager.PlayerEngine.CurrentTrack;
-            if (track != null) {
-                ServiceManager.PlayerEngine.Close ();
-                ServiceManager.PlayerEngine.OpenPlay (track);
-            }
+            ServiceManager.PlaybackController.Restart ();
         }
 
         private void OnStopWhenFinishedAction (object o, EventArgs args)



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