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
- From: abock svn gnome org
- To: svn-commits-list gnome org
- Subject: 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
- Date: Tue, 6 May 2008 17:51:14 +0100 (BST)
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]