[rygel] renderer-gst: Base on MediaRenderer class



commit a6ae6de0bb95b1feec289673b08bb3e43caa787d
Author: Jens Georg <jensg openismus com>
Date:   Thu Dec 6 00:32:56 2012 +0100

    renderer-gst: Base on MediaRenderer class

 src/librygel-core/rygel-media-device.vala          |    8 +++-
 .../rygel-playbin-renderer.vala                    |   43 ++-----------------
 .../rygel-media-renderer-plugin.vala               |    1 -
 src/librygel-renderer/rygel-media-renderer.vala    |    6 ++-
 src/librygel-server/rygel-media-server.vala        |    6 ++-
 5 files changed, 19 insertions(+), 45 deletions(-)
---
diff --git a/src/librygel-core/rygel-media-device.vala b/src/librygel-core/rygel-media-device.vala
index 3ac71d7..e6a2d5b 100644
--- a/src/librygel-core/rygel-media-device.vala
+++ b/src/librygel-core/rygel-media-device.vala
@@ -40,9 +40,13 @@ public abstract class Rygel.MediaDevice : Object {
     private HashMap<string, DeviceContext> devices;
     private ContextManager manager;
 
-    protected Rygel.Plugin plugin { get; protected set; }
+    public Rygel.Plugin plugin { construct set; protected get; }
     public string title { construct; protected get; }
-    public PluginCapabilities capabilities { construct; protected get; }
+    public PluginCapabilities capabilities {
+        construct;
+        protected get;
+        default = PluginCapabilities.NONE;
+    }
 
     public override void constructed () {
         this.manager = ContextManager.create (0);
diff --git a/src/librygel-renderer-gst/rygel-playbin-renderer.vala b/src/librygel-renderer-gst/rygel-playbin-renderer.vala
index a417b07..451ff90 100644
--- a/src/librygel-renderer-gst/rygel-playbin-renderer.vala
+++ b/src/librygel-renderer-gst/rygel-playbin-renderer.vala
@@ -22,24 +22,6 @@
 using Gee;
 using GUPnP;
 
-internal class Rygel.Playbin.WrappingPlugin : Rygel.MediaRendererPlugin {
-    private MediaPlayer player;
-
-    public WrappingPlugin (Gst.Element playbin) {
-        base ("LibRygel-Renderer", _("LibRygel Renderer"));
-
-        return_val_if_fail (playbin != null, null);
-        return_val_if_fail (playbin.get_type ().name() == "GstPlayBin", null);
-
-        this.player = new Player.wrap (playbin);
-    }
-
-
-    public override MediaPlayer? get_player () {
-        return this.player;
-    }
-}
-
 /**
  * An in-process UPnP renderer that uses a GStreamer Playbin2 element.
  *
@@ -58,7 +40,7 @@ internal class Rygel.Playbin.WrappingPlugin : Rygel.MediaRendererPlugin {
  *
  * See the <link linkend="implementing-renderers-gst">Implementing GStreamer-based Renderers</link> section.
  */
-public class Rygel.Playbin.Renderer : Rygel.MediaDevice {
+public class Rygel.Playbin.Renderer : Rygel.MediaRenderer {
     /**
      * Create a new instance of Renderer.
      *
@@ -68,14 +50,8 @@ public class Rygel.Playbin.Renderer : Rygel.MediaDevice {
      * @param title Friendly name of the new UPnP renderer on the network.
      */
     public Renderer (string title) {
-        Object (title: title);
-    }
-
-    public override void constructed () {
-        base.constructed ();
-
-        this.plugin = new Plugin ();
-        this.prepare_upnp (this.title);
+        Object (title: title,
+                player: Player.get_default ());
     }
 
     /**
@@ -86,13 +62,11 @@ public class Rygel.Playbin.Renderer : Rygel.MediaDevice {
      * @param title Friendly name of the new UPnP renderer on the network.
      */
     public Renderer.wrap (Gst.Element pipeline, string title) {
-        base ();
-
         return_val_if_fail (pipeline != null, null);
         return_val_if_fail (pipeline.get_type ().name() == "GstPlayBin", null);
 
-        this.plugin = new WrappingPlugin (pipeline);
-        this.prepare_upnp (title);
+        Object (title: title,
+                player: new Player.wrap (pipeline));
     }
 
     /**
@@ -104,11 +78,4 @@ public class Rygel.Playbin.Renderer : Rygel.MediaDevice {
 
         return player.playbin;
     }
-
-    private void prepare_upnp (string title) {
-        this.plugin.title = title;
-
-        // Always listen on localhost
-        this.add_interface ("lo");
-    }
 }
diff --git a/src/librygel-renderer/rygel-media-renderer-plugin.vala b/src/librygel-renderer/rygel-media-renderer-plugin.vala
index 1ac3690..03eda7d 100644
--- a/src/librygel-renderer/rygel-media-renderer-plugin.vala
+++ b/src/librygel-renderer/rygel-media-renderer-plugin.vala
@@ -69,7 +69,6 @@ public class Rygel.MediaRendererPlugin : Rygel.Plugin {
                                      RenderingControl.DESCRIPTION_PATH,
                                      typeof (RenderingControl));
         this.add_resource (resource);
-
     }
 
     public virtual MediaPlayer? get_player () {
diff --git a/src/librygel-renderer/rygel-media-renderer.vala b/src/librygel-renderer/rygel-media-renderer.vala
index 8fb02ec..3e1fbb9 100644
--- a/src/librygel-renderer/rygel-media-renderer.vala
+++ b/src/librygel-renderer/rygel-media-renderer.vala
@@ -22,7 +22,7 @@
 internal class Plugin : Rygel.MediaRendererPlugin {
     private Rygel.MediaPlayer player;
 
-    public Plugin (Rygel.MediaPlayer player,
+    public Plugin (Rygel.MediaPlayer        player,
                    Rygel.PluginCapabilities capabilities) {
         base ("LibRygelRenderer", _("LibRygelRenderer"), null, capabilities);
         this.player = player;
@@ -60,7 +60,9 @@ public class Rygel.MediaRenderer : MediaDevice {
     public override void constructed () {
         base.constructed ();
 
-        this.plugin = new global::Plugin (this.player, this.capabilities);
+        if (this.plugin == null) {
+            this.plugin = new global::Plugin (this.player, this.capabilities);
+        }
         this.plugin.title = this.title;
     }
 }
diff --git a/src/librygel-server/rygel-media-server.vala b/src/librygel-server/rygel-media-server.vala
index 42ad8ce..87da331 100644
--- a/src/librygel-server/rygel-media-server.vala
+++ b/src/librygel-server/rygel-media-server.vala
@@ -59,8 +59,10 @@ public class Rygel.MediaServer : MediaDevice {
     public override void constructed () {
         base.constructed ();
 
-        this.plugin = new global::Plugin (this.root_container,
-                                          this.capabilities);
+        if (this.plugin == null) {
+            this.plugin = new global::Plugin (this.root_container,
+                                              this.capabilities);
+        }
         this.plugin.title = this.title;
     }
 }



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