[rygel] media-export: Automatically track item changes
- From: Jens Georg <jensgeorg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [rygel] media-export: Automatically track item changes
- Date: Wed, 12 Dec 2012 18:25:41 +0000 (UTC)
commit aa58620faa260e76076ec2b84d14c8b972bdd356
Author: Jens Georg <jensg openismus com>
Date: Tue Dec 11 17:28:48 2012 +0100
media-export: Automatically track item changes
.../rygel-media-export-dummy-container.vala | 10 +++++++---
.../media-export/rygel-media-export-harvester.vala | 1 +
.../rygel-media-export-harvesting-task.vala | 20 ++++++++++++++++++--
.../rygel-media-export-music-item.vala | 4 +++-
.../rygel-media-export-photo-item.vala | 5 +++--
.../rygel-media-export-playlist-item.vala | 4 +++-
.../rygel-media-export-video-item.vala | 2 ++
7 files changed, 37 insertions(+), 9 deletions(-)
---
diff --git a/src/plugins/media-export/rygel-media-export-dummy-container.vala b/src/plugins/media-export/rygel-media-export-dummy-container.vala
index 50c68d3..4e2f29f 100644
--- a/src/plugins/media-export/rygel-media-export-dummy-container.vala
+++ b/src/plugins/media-export/rygel-media-export-dummy-container.vala
@@ -19,14 +19,18 @@
*/
using Gee;
-internal class Rygel.MediaExport.DummyContainer : NullContainer {
+internal class Rygel.MediaExport.DummyContainer : TrackableDbContainer {
public File file;
public Gee.List<string> children;
public DummyContainer (File file,
MediaContainer parent) {
- this.id = MediaCache.get_id (file);
- this.title = file.get_basename ();
+ MediaCache cache = null;
+ try {
+ cache = MediaCache.get_default ();
+ } catch (Error error) { }
+
+ base (cache, MediaCache.get_id (file), file.get_basename ());
this.parent_ref = parent;
this.file = file;
this.uris.add (file.get_uri ());
diff --git a/src/plugins/media-export/rygel-media-export-harvester.vala b/src/plugins/media-export/rygel-media-export-harvester.vala
index 6fe6815..dac9a75 100644
--- a/src/plugins/media-export/rygel-media-export-harvester.vala
+++ b/src/plugins/media-export/rygel-media-export-harvester.vala
@@ -234,6 +234,7 @@ internal class Rygel.MediaExport.Harvester : GLib.Object {
if (parent != null) {
parent.updated ();
+ cache.save_container (parent);
}
} catch (Error error) {
warning (_("Error removing object from database: %s"),
diff --git a/src/plugins/media-export/rygel-media-export-harvesting-task.vala b/src/plugins/media-export/rygel-media-export-harvesting-task.vala
index 0413222..6bc32d5 100644
--- a/src/plugins/media-export/rygel-media-export-harvesting-task.vala
+++ b/src/plugins/media-export/rygel-media-export-harvesting-task.vala
@@ -287,6 +287,9 @@ public class Rygel.MediaExport.HarvestingTask : Rygel.StateMachine,
} catch (Error error) {};
}
parent.updated (parent);
+ try {
+ this.cache.save_container (parent);
+ } catch (Error error) { }
this.completed ();
}
@@ -322,11 +325,18 @@ public class Rygel.MediaExport.HarvestingTask : Rygel.StateMachine,
if (item != null) {
item.parent_ref = this.containers.peek_head ();
+ // This is only necessary to generate the poper <objAdd LastChange
+ // entry
if (entry.known) {
(item as UpdatableObject).commit.begin ();
} else {
var container = item.parent as TrackableContainer;
- container.add_child_tracked.begin (item);
+ container.add_child_tracked.begin (item, () => {
+ // save again to make sure we persist the update count
+ try {
+ cache.save_item (item);
+ } catch (Error error) { }
+ }) ;
}
}
@@ -368,8 +378,14 @@ public class Rygel.MediaExport.HarvestingTask : Rygel.StateMachine,
if (cache.get_child_count (container.id) > 0) {
var head = this.containers.peek_head ();
head.updated (head);
+ cache.save_container (head);
} else {
- cache.remove_by_id (container.id);
+ var parent = container.parent as TrackableContainer;
+ parent.remove_child_tracked.begin (container, () => {
+ try {
+ MediaCache.get_default ().save_container (parent);
+ } catch (Error error) { }
+ });
}
} catch (Error error) { }
this.containers.pop_head ();
diff --git a/src/plugins/media-export/rygel-media-export-music-item.vala b/src/plugins/media-export/rygel-media-export-music-item.vala
index 4d27b9a..2ff0be3 100644
--- a/src/plugins/media-export/rygel-media-export-music-item.vala
+++ b/src/plugins/media-export/rygel-media-export-music-item.vala
@@ -25,7 +25,8 @@
* and metadata extraction.
*/
internal class Rygel.MediaExport.MusicItem : Rygel.MusicItem,
- Rygel.UpdatableObject {
+ Rygel.UpdatableObject,
+ Rygel.TrackableItem {
public int disc;
public MusicItem (string id,
@@ -36,6 +37,7 @@ internal class Rygel.MediaExport.MusicItem : Rygel.MusicItem,
}
public async void commit () throws Error {
+ this.changed ();
var cache = MediaCache.get_default ();
cache.save_item (this);
}
diff --git a/src/plugins/media-export/rygel-media-export-photo-item.vala b/src/plugins/media-export/rygel-media-export-photo-item.vala
index d6e938f..9d7ad43 100644
--- a/src/plugins/media-export/rygel-media-export-photo-item.vala
+++ b/src/plugins/media-export/rygel-media-export-photo-item.vala
@@ -21,7 +21,8 @@
*/
internal class Rygel.MediaExport.PhotoItem : Rygel.PhotoItem,
- Rygel.UpdatableObject {
+ Rygel.UpdatableObject,
+ Rygel.TrackableItem {
public PhotoItem (string id,
MediaContainer parent,
string title,
@@ -30,8 +31,8 @@ internal class Rygel.MediaExport.PhotoItem : Rygel.PhotoItem,
}
public async void commit () throws Error {
+ this.changed ();
var cache = MediaCache.get_default ();
cache.save_item (this);
}
-
}
diff --git a/src/plugins/media-export/rygel-media-export-playlist-item.vala b/src/plugins/media-export/rygel-media-export-playlist-item.vala
index e2abe66..6d94cae 100644
--- a/src/plugins/media-export/rygel-media-export-playlist-item.vala
+++ b/src/plugins/media-export/rygel-media-export-playlist-item.vala
@@ -25,7 +25,8 @@
* and metadata extraction.
*/
internal class Rygel.MediaExport.PlaylistItem : Rygel.PlaylistItem,
- Rygel.UpdatableObject {
+ Rygel.UpdatableObject,
+ Rygel.TrackableItem {
public PlaylistItem (string id,
MediaContainer parent,
string title,
@@ -34,6 +35,7 @@ internal class Rygel.MediaExport.PlaylistItem : Rygel.PlaylistItem,
}
public async void commit () throws Error {
+ this.changed ();
var cache = MediaCache.get_default ();
cache.save_item (this);
}
diff --git a/src/plugins/media-export/rygel-media-export-video-item.vala b/src/plugins/media-export/rygel-media-export-video-item.vala
index e22213d..18e5fcd 100644
--- a/src/plugins/media-export/rygel-media-export-video-item.vala
+++ b/src/plugins/media-export/rygel-media-export-video-item.vala
@@ -21,6 +21,7 @@
*/
internal class Rygel.MediaExport.VideoItem : Rygel.VideoItem,
+ Rygel.TrackableItem,
Rygel.UpdatableObject {
public VideoItem (string id,
MediaContainer parent,
@@ -30,6 +31,7 @@ internal class Rygel.MediaExport.VideoItem : Rygel.VideoItem,
}
public async void commit () throws Error {
+ this.changed ();
var cache = MediaCache.get_default ();
cache.save_item (this);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]