banshee r3890 - in trunk/banshee: . src/Core/Banshee.Core/Banshee.Collection src/Core/Banshee.Services/Banshee.MediaEngine src/Core/Banshee.Services/Banshee.Sources src/Dap/Banshee.Dap.Ipod/Banshee.Dap.Ipod



Author: abock
Date: Tue May  6 16:51:13 2008
New Revision: 3890
URL: http://svn.gnome.org/viewvc/banshee?rev=3890&view=rev

Log:
2008-05-06  Aaron Bockover  <abock gnome org>

    * src/Core/Banshee.Core/Banshee.Collection/TrackInfo.cs: Revert CanPlay
    to not be smart with playback errors; it's probably best if the engine
    just be allowed to try whenever a track is requested to play

    * src/Core/Banshee.Services/Banshee.MediaEngine/PlayerEngineService.cs:
    Consolidated Open and OpenPlay logic into a single method to eliminate
    duplication

    * src/Dap/Banshee.Dap.Ipod/Banshee.Dap.Ipod/IpodSource.cs: Implemented
    track remove support



Modified:
   trunk/banshee/ChangeLog
   trunk/banshee/src/Core/Banshee.Core/Banshee.Collection/TrackInfo.cs
   trunk/banshee/src/Core/Banshee.Services/Banshee.MediaEngine/PlayerEngineService.cs
   trunk/banshee/src/Core/Banshee.Services/Banshee.Sources/PrimarySource.cs
   trunk/banshee/src/Dap/Banshee.Dap.Ipod/Banshee.Dap.Ipod/IpodSource.cs

Modified: trunk/banshee/src/Core/Banshee.Core/Banshee.Collection/TrackInfo.cs
==============================================================================
--- trunk/banshee/src/Core/Banshee.Core/Banshee.Collection/TrackInfo.cs	(original)
+++ trunk/banshee/src/Core/Banshee.Core/Banshee.Collection/TrackInfo.cs	Tue May  6 16:51:13 2008
@@ -299,7 +299,7 @@
 
         private bool can_play = true;
         public bool CanPlay {
-            get { return can_play && PlaybackError == StreamPlaybackError.None; }
+            get { return can_play; }
             set { can_play = value; }
         }
 

Modified: trunk/banshee/src/Core/Banshee.Services/Banshee.MediaEngine/PlayerEngineService.cs
==============================================================================
--- trunk/banshee/src/Core/Banshee.Services/Banshee.MediaEngine/PlayerEngineService.cs	(original)
+++ trunk/banshee/src/Core/Banshee.Services/Banshee.MediaEngine/PlayerEngineService.cs	Tue May  6 16:51:13 2008
@@ -245,11 +245,7 @@
         
         public void Open (TrackInfo track)
         {
-            if (!track.CanPlay || OnTrackIntercept (track)) {
-                return;
-            }
-               
-            OpenCheck (track);
+            OpenPlay (track, false);
         }
         
         public void Open (SafeUri uri)
@@ -264,6 +260,11 @@
         
         public void OpenPlay (TrackInfo track)
         {
+            OpenPlay (track, true);
+        }
+        
+        private void OpenPlay (TrackInfo track, bool play)
+        {
             if (!track.CanPlay || OnTrackIntercept (track)) {
                 return;
             }

Modified: trunk/banshee/src/Core/Banshee.Services/Banshee.Sources/PrimarySource.cs
==============================================================================
--- trunk/banshee/src/Core/Banshee.Services/Banshee.Sources/PrimarySource.cs	(original)
+++ trunk/banshee/src/Core/Banshee.Services/Banshee.Sources/PrimarySource.cs	Tue May  6 16:51:13 2008
@@ -440,8 +440,7 @@
 
             // Store a snapshot of the current selection
             CachedList<DatabaseTrackInfo> cached_list = CachedList<DatabaseTrackInfo>.CreateFromModelSelection (model);
-
-            System.Threading.ThreadPool.QueueUserWorkItem (AddTrackList, cached_list);
+            AddTrackList (cached_list);
 
             return true;
         }
@@ -463,9 +462,8 @@
             IncrementAddedTracks ();
         }
 
-        protected virtual void AddTrackList (object cached_list)
+        protected virtual void AddTrackList (CachedList<DatabaseTrackInfo> list)
         {
-            CachedList<DatabaseTrackInfo> list = cached_list as CachedList<DatabaseTrackInfo>;
             is_adding = true;
             AddTrackJob.Total += (int) list.Count;
 

Modified: trunk/banshee/src/Dap/Banshee.Dap.Ipod/Banshee.Dap.Ipod/IpodSource.cs
==============================================================================
--- trunk/banshee/src/Dap/Banshee.Dap.Ipod/Banshee.Dap.Ipod/IpodSource.cs	(original)
+++ trunk/banshee/src/Dap/Banshee.Dap.Ipod/Banshee.Dap.Ipod/IpodSource.cs	Tue May  6 16:51:13 2008
@@ -46,6 +46,7 @@
     public class IpodSource : DapSource
     {
         private PodSleuthDevice ipod_device;
+        private Dictionary<int, IpodTrackInfo> tracks_map = new Dictionary<int, IpodTrackInfo> (); // FIXME: EPIC FAIL
         private bool database_loaded;
         
         private string name_path;
@@ -157,6 +158,8 @@
             if (refresh) {
                 ipod_device.TrackDatabase.Reload ();
             }
+            
+            tracks_map.Clear ();
              
             if (database_supported || (ipod_device.HasTrackDatabase && 
                 ipod_device.ModelInfo.DeviceClass == "shuffle")) {
@@ -164,6 +167,7 @@
                     IpodTrackInfo track = new IpodTrackInfo (ipod_track);
                     track.PrimarySource = this;
                     track.Save (false);
+                    tracks_map.Add (track.TrackId, track);
                 }
             } 
             
@@ -271,7 +275,7 @@
                     name = ipod_device.Name;
                 }
                     
-                /*if (!String.IsNullOrEmpty (name)) {
+                if (!String.IsNullOrEmpty (name)) {
                     return name;
                 } else if (ipod_device.PropertyExists ("volume.label")) {
                     name = ipod_device.GetPropertyString ("volume.label");
@@ -279,9 +283,7 @@
                     name = ipod_device.GetPropertyString ("info.product");
                 } else {
                     name = ((IDevice)ipod_device).Name ?? "iPod";
-                }*/
-                
-                name = "WTF";
+                }
                 
                 try {
                     return name;
@@ -331,10 +333,13 @@
         protected override void DeleteTrack (DatabaseTrackInfo track)
         {
             lock (sync_mutex) {
-                IpodTrackInfo ipod_track = track as IpodTrackInfo;
+                if (!tracks_map.ContainsKey (track.TrackId)) {
+                    return;
+                }
+                
+                IpodTrackInfo ipod_track = tracks_map[track.TrackId];
                 if (ipod_track != null) {
                     tracks_to_remove.Enqueue (ipod_track);
-                    
                     QueueSync ();
                 }
             }
@@ -446,6 +451,10 @@
                     track = tracks_to_remove.Dequeue ();
                 }
                 
+                if (tracks_map.ContainsKey (track.TrackId)) {
+                    tracks_map.Remove (track.TrackId);
+                }
+                
                 try {
                     if (track.IpodTrack != null) {
                         ipod_device.TrackDatabase.RemoveTrack (track.IpodTrack);
@@ -469,10 +478,9 @@
         {
             double progress = args.CurrentTrack == null ? 0.0 : args.TotalProgress;
             string message = args.CurrentTrack == null 
-                    ? Catalog.GetString("Waiting for Media")
+                    ? Catalog.GetString ("Waiting for Media")
                     : String.Format ("{0} - {1}", args.CurrentTrack.Artist, args.CurrentTrack.Title);
              
-             Console.WriteLine ("Progress: {0}", progress);
              AddTrackJob.Title = Catalog.GetString ("Syncing iPod");
              AddTrackJob.Status = message;
              AddTrackJob.Progress = progress;



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