[banshee/gapless-ng] [Banshee.Metadata] Delay writing metadata for 2 seconds.



commit 5fd1e52eed45b9cf55de3967bbe7bc7334ca4112
Author: Christopher James Halse Rogers <chrishr src gnome org>
Date:   Sun Feb 28 12:14:51 2010 +1100

    [Banshee.Metadata] Delay writing metadata for 2 seconds.
    
    Gapless needs to update the LastPlayed field 1 sec before the track actually finishes
    in order to make shuffle-by-* (and other queries which rely on LastPlayed) work.
    This causes the metadata to be written out twice in quick succession.
    
    Fix this by only writing the metadata of a track out if it has been unchanged in the
    last 2 seconds.  This will have the effect of aggregating the metadata updates into
    a single write.

 .../Banshee.Metadata/SaveTrackMetadataJob.cs       |    6 ++++++
 1 files changed, 6 insertions(+), 0 deletions(-)
---
diff --git a/src/Core/Banshee.Services/Banshee.Metadata/SaveTrackMetadataJob.cs b/src/Core/Banshee.Services/Banshee.Metadata/SaveTrackMetadataJob.cs
index bc00bca..83d70be 100644
--- a/src/Core/Banshee.Services/Banshee.Metadata/SaveTrackMetadataJob.cs
+++ b/src/Core/Banshee.Services/Banshee.Metadata/SaveTrackMetadataJob.cs
@@ -73,6 +73,12 @@ namespace Banshee.Metadata
         {
             DatabaseTrackInfo track = DatabaseTrackInfo.Provider.Load (reader.Reader);
 
+            var write_delay = track.DateUpdated.AddSeconds (2) - DateTime.Now;
+            if (write_delay.TotalMilliseconds > 0) {
+                System.Threading.Thread.Sleep (write_delay);
+                return;
+            }
+
             bool wrote = false;
             bool renamed = false;
             try {



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