[banshee/gapless-ng] [Banshee.Metadata] Delay writing metadata for 2 seconds.
- From: Christopher James Halse Rogers <chrishr src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [banshee/gapless-ng] [Banshee.Metadata] Delay writing metadata for 2 seconds.
- Date: Sun, 28 Feb 2010 03:45:03 +0000 (UTC)
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]