Use root container directly whenever possible.
authorZeeshan Ali (Khattak) <zeeshanak@src.gnome.org>
Mon, 9 Feb 2009 22:28:03 +0000 (22:28 +0000)
committerZeeshan Ali (Khattak) <zeeshanak@src.gnome.org>
Mon, 9 Feb 2009 22:28:03 +0000 (22:28 +0000)
svn path=/trunk/; revision=543

src/rygel/rygel-browse.vala
src/rygel/rygel-http-request.vala
src/rygel/rygel-http-server.vala

index f25391f..808f390 100644 (file)
@@ -50,7 +50,7 @@ public class Browse: GLib.Object {
     // The media object corresponding to object_id
     MediaObject media_object;
 
-    private unowned ContentDirectory content_dir;
+    private MediaContainer root_container;
     private ServiceAction action;
     private Rygel.DIDLLiteWriter didl_writer;
 
@@ -59,11 +59,11 @@ public class Browse: GLib.Object {
 
     public Browse (ContentDirectory    content_dir,
                    owned ServiceAction action) {
-        this.content_dir = content_dir;
+        this.root_container = content_dir.root_container;
         this.action = (owned) action;
 
         this.didl_writer =
-                new Rygel.DIDLLiteWriter (this.content_dir.http_server);
+                new Rygel.DIDLLiteWriter (content_dir.http_server);
     }
 
     public void start () {
@@ -87,9 +87,15 @@ public class Browse: GLib.Object {
     }
 
     private bool fetch_media_object () {
+        if (this.object_id == this.root_container.id) {
+            this.media_object = this.root_container;
+
+            return true;
+        }
+
         try {
             this.media_object =
-                        this.content_dir.find_object_by_id (this.object_id);
+                        this.root_container.find_object_by_id (this.object_id);
         } catch (Error err) {
             this.handle_error (err);
             return false;
@@ -192,7 +198,7 @@ public class Browse: GLib.Object {
         string didl = this.didl_writer.get_string ();
 
         if (this.update_id == uint32.MAX) {
-            this.update_id = this.content_dir.root_container.update_id;
+            this.update_id = this.root_container.update_id;
         }
 
         /* Set action return arguments */
index a5df60d..aee7306 100644 (file)
@@ -38,7 +38,7 @@ public errordomain Rygel.HTTPRequestError {
  * Responsible for handling HTTP client requests.
  */
 public class Rygel.HTTPRequest : GLib.Object {
-    private unowned ContentDirectory content_dir;
+    private MediaContainer root_container;
     private Soup.Server server;
     private Soup.Message msg;
     private HashTable<string,string>? query;
@@ -51,11 +51,11 @@ public class Rygel.HTTPRequest : GLib.Object {
     private MediaItem item;
     private Seek seek;
 
-    public HTTPRequest (ContentDirectory          content_dir,
+    public HTTPRequest (MediaContainer            root_container,
                         Soup.Server               server,
                         Soup.Message              msg,
                         HashTable<string,string>? query) {
-        this.content_dir = content_dir;
+        this.root_container = root_container;
         this.server = server;
         this.msg = msg;
         this.query = query;
@@ -286,7 +286,7 @@ public class Rygel.HTTPRequest : GLib.Object {
         MediaObject media_object;
 
         try {
-            media_object = this.content_dir.find_object_by_id (this.item_id);
+            media_object = this.root_container.find_object_by_id (this.item_id);
         } catch (Error error) {
             this.handle_error (error);
             return;
index 226e05b..b92641e 100644 (file)
@@ -30,14 +30,14 @@ public class Rygel.HTTPServer : GLib.Object {
     private const string SERVER_PATH_PREFIX = "/RygelHTTPServer";
     private string path_root;
 
-    // Reference to associated ContentDirectory service
-    private unowned ContentDirectory content_dir;
+    // Reference to root container of associated ContentDirectory
+    private MediaContainer root_container;
     private GUPnP.Context context;
     private ArrayList<HTTPRequest> requests;
 
     public HTTPServer (ContentDirectory content_dir,
                        string           name) {
-        this.content_dir = content_dir;
+        this.root_container = content_dir.root_container;
         this.context = content_dir.context;
         this.requests = new ArrayList<HTTPRequest> ();
 
@@ -74,7 +74,7 @@ public class Rygel.HTTPServer : GLib.Object {
                                  string                    server_path,
                                  HashTable<string,string>? query,
                                  Soup.ClientContext        soup_client) {
-        var request = new HTTPRequest (this.content_dir, server, msg, query);
+        var request = new HTTPRequest (this.root_container, server, msg, query);
 
         request.handled += this.on_request_handled;
         this.requests.add (request);