[rygel] media-export,mediathek: Root-Container-Singleton



commit afc281148546a16dfe52deb7bf0f3ed68d1e8709
Author: Jens Georg <mail jensge org>
Date:   Mon Jul 27 22:49:48 2009 +0200

    media-export,mediathek: Root-Container-Singleton
    
    Use the same root-container on every interface device

 .../media-export/rygel-media-export-plugin.vala    |    2 +-
 .../rygel-media-export-root-container.vala         |   12 +++++++++++-
 src/plugins/mediathek/rygel-mediathek-plugin.vala  |    2 +-
 .../mediathek/rygel-mediathek-root-container.vala  |   11 ++++++++++-
 4 files changed, 23 insertions(+), 4 deletions(-)
---
diff --git a/src/plugins/media-export/rygel-media-export-plugin.vala b/src/plugins/media-export/rygel-media-export-plugin.vala
index 25f4871..58675ff 100644
--- a/src/plugins/media-export/rygel-media-export-plugin.vala
+++ b/src/plugins/media-export/rygel-media-export-plugin.vala
@@ -50,6 +50,6 @@ public void module_init (PluginLoader loader) {
 
 public class Rygel.MediaExportContentDir : ContentDirectory {
     public override MediaContainer? create_root_container () {
-        return new MediaExportRootContainer ();
+        return MediaExportRootContainer.get_instance ();
     }
 }
diff --git a/src/plugins/media-export/rygel-media-export-root-container.vala b/src/plugins/media-export/rygel-media-export-root-container.vala
index a6d089d..c4b34f8 100644
--- a/src/plugins/media-export/rygel-media-export-root-container.vala
+++ b/src/plugins/media-export/rygel-media-export-root-container.vala
@@ -28,6 +28,8 @@ public class Rygel.MediaExportRootContainer : Rygel.MediaDBContainer {
     private HashMap<File, MediaExportHarvester> harvester;
     private MediaExportRecursiveFileMonitor monitor;
 
+    private static MediaExportRootContainer instance = null;
+
     private ArrayList<string> get_uris () {
         ArrayList<string> uris;
 
@@ -58,10 +60,18 @@ public class Rygel.MediaExportRootContainer : Rygel.MediaDBContainer {
         return uris;
     }
 
+    public static MediaExportRootContainer get_instance() {
+        if (MediaExportRootContainer.instance == null) {
+            MediaExportRootContainer.instance = new MediaExportRootContainer ();
+        }
+
+        return MediaExportRootContainer.instance;
+    }
+
     /**
      * Create a new root container.
      */
-    public MediaExportRootContainer () {
+    private MediaExportRootContainer () {
         var db = new MediaDB("media-export");
         base (db, "0", "MediaExportRoot");
 
diff --git a/src/plugins/mediathek/rygel-mediathek-plugin.vala b/src/plugins/mediathek/rygel-mediathek-plugin.vala
index 69645ba..3f15a56 100644
--- a/src/plugins/mediathek/rygel-mediathek-plugin.vala
+++ b/src/plugins/mediathek/rygel-mediathek-plugin.vala
@@ -39,7 +39,7 @@ public void module_init (PluginLoader loader) {
 
 public class Rygel.MediathekContentDir : ContentDirectory {
     public override MediaContainer? create_root_container () {
-        return new MediathekRootContainer ();
+        return MediathekRootContainer.get_instance ();
     }
 }
 
diff --git a/src/plugins/mediathek/rygel-mediathek-root-container.vala b/src/plugins/mediathek/rygel-mediathek-root-container.vala
index 428b94e..f84a573 100644
--- a/src/plugins/mediathek/rygel-mediathek-root-container.vala
+++ b/src/plugins/mediathek/rygel-mediathek-root-container.vala
@@ -27,6 +27,7 @@ using GConf;
 public class Rygel.MediathekRootContainer : Rygel.MediaContainer {
     private ArrayList<MediathekRssContainer> items;
     internal SessionAsync session;
+    private static MediathekRootContainer instance;
 
     public override void get_children (uint offset, 
                                        uint max_count, 
@@ -94,7 +95,15 @@ public class Rygel.MediathekRootContainer : Rygel.MediaContainer {
         return true;
     }
 
-    public MediathekRootContainer () {
+    public static MediathekRootContainer get_instance () {
+        if (MediathekRootContainer.instance == null) {
+            MediathekRootContainer.instance = new MediathekRootContainer ();
+        }
+
+        return instance;
+    }
+
+    private MediathekRootContainer () {
         base.root ("ZDF Mediathek", 0);
         this.session = new Soup.SessionAsync ();
         this.items = new ArrayList<MediathekRssContainer> ();



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