[rygel] core: move uris from MediaItem to MediaObject



commit 4552c7a76f67cdd98d4b0c446e51f798eb51c18d
Author: Jens Georg <mail jensge org>
Date:   Sun Jun 21 02:12:44 2009 +0200

    core: move uris from MediaItem to MediaObject

 src/rygel/rygel-media-db.vala     |   21 ++++++++++++---------
 src/rygel/rygel-media-item.vala   |    3 ---
 src/rygel/rygel-media-object.vala |    5 +++++
 3 files changed, 17 insertions(+), 12 deletions(-)
---
diff --git a/src/rygel/rygel-media-db.vala b/src/rygel/rygel-media-db.vala
index 7be100a..6347b48 100644
--- a/src/rygel/rygel-media-db.vala
+++ b/src/rygel/rygel-media-db.vala
@@ -203,6 +203,7 @@ public class Rygel.MediaDB : Object {
         var rc = db.exec ("BEGIN");
         try {
             create_object (container, -1);
+            save_uris (container);
             rc = db.exec ("COMMIT");
         } catch (Error error) {
             rc = db.exec ("ROLLBACK");
@@ -300,7 +301,7 @@ public class Rygel.MediaDB : Object {
         }
     }
 
-    private void save_uris (MediaItem item) throws Error {
+    private void save_uris (MediaObject obj) throws Error {
         Statement statement;
 
         var rc = db.prepare_v2 (URI_INSERT_STRING,
@@ -308,8 +309,8 @@ public class Rygel.MediaDB : Object {
                                 out statement,
                                 null);
         if (rc == Sqlite.OK) {
-            foreach (var uri in item.uris) {
-                statement.bind_text (1, item.id);
+            foreach (var uri in obj.uris) {
+                statement.bind_text (1, obj.id);
                 statement.bind_text (2, uri);
                 rc = statement.step ();
                 if (rc != Sqlite.OK && rc != Sqlite.DONE) {
@@ -345,7 +346,7 @@ public class Rygel.MediaDB : Object {
         }
     }
 
-    private void add_uris (MediaItem item) {
+    private void add_uris (MediaObject obj) {
         Statement statement;
 
         var rc = db.prepare_v2 (OBJECT_GET_URIS,
@@ -353,13 +354,13 @@ public class Rygel.MediaDB : Object {
                                 out statement,
                                 null);
         if (rc == Sqlite.OK) {
-            statement.bind_text (1, item.id);
+            statement.bind_text (1, obj.id);
             while ((rc = statement.step ()) == Sqlite.ROW) {
-                item.uris.add (statement.column_text (0));
+                obj.uris.add (statement.column_text (0));
             }
         } else {
-            warning ("Failed to get uris for item %s: %s",
-                     item.id,
+            warning ("Failed to get uris for obj %s: %s",
+                     obj.id,
                      db.errmsg ());
         }
     }
@@ -381,13 +382,15 @@ public class Rygel.MediaDB : Object {
                         statement.column_text (1),
                         statement.column_text (6));
                 fill_item (statement, (MediaItem)obj);
-                add_uris ((MediaItem)obj);
                 break;
             default:
                 // should not happen
                 break;
         }
 
+        if (obj != null) {
+            add_uris (obj);
+        }
         return obj;
     }
 
diff --git a/src/rygel/rygel-media-item.vala b/src/rygel/rygel-media-item.vala
index c55f4ca..ea57d22 100644
--- a/src/rygel/rygel-media-item.vala
+++ b/src/rygel/rygel-media-item.vala
@@ -42,7 +42,6 @@ public class Rygel.MediaItem : MediaObject {
     public string upnp_class;
 
     // Resource info
-    public ArrayList<string> uris;
     public string mime_type;
     public string dlna_profile;
 
@@ -69,8 +68,6 @@ public class Rygel.MediaItem : MediaObject {
         this.parent = parent;
         this.title = title;
         this.upnp_class = upnp_class;
-
-        this.uris = new ArrayList<string> ();
     }
 
     // Live media items need to provide a nice working implementation of this
diff --git a/src/rygel/rygel-media-object.vala b/src/rygel/rygel-media-object.vala
index 2c37223..c2adcf6 100644
--- a/src/rygel/rygel-media-object.vala
+++ b/src/rygel/rygel-media-object.vala
@@ -21,6 +21,7 @@
  */
 
 using GUPnP;
+using Gee;
 
 /**
  * Represents a media object (container and item).
@@ -28,6 +29,7 @@ using GUPnP;
 public abstract class Rygel.MediaObject : GLib.Object {
     public string id;
     public string title;
+    public Gee.ArrayList<string> uris;
 
     // You can keep both a unowned and owned ref to parent of this MediaObject.
     // In most cases, one will only need to keep an unowned ref to avoid cyclic
@@ -39,4 +41,7 @@ public abstract class Rygel.MediaObject : GLib.Object {
     // mandatory.
     public unowned MediaContainer parent;
     public MediaContainer parent_ref;
+    construct {
+        uris = new ArrayList<string> ();
+    }
 }



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