[rygel] media-export: Disable in favor of Tracker plugin



commit 3034d9d5e5aebf0414b455c580c57dd04494ad7c
Author: Zeeshan Ali (Khattak) <zeeshanak gnome org>
Date:   Fri Aug 6 18:06:32 2010 +0300

    media-export: Disable in favor of Tracker plugin
    
    If user have Tracker installed, we really should make use of that. This
    change only disables the plugin's exposure over UPnP. We really should
    cancel all metadata harvesting if plugin is disabled and viceversa.

 .../media-export/rygel-media-export-plugin.vala    |   34 +++++++++++++++++++-
 1 files changed, 33 insertions(+), 1 deletions(-)
---
diff --git a/src/plugins/media-export/rygel-media-export-plugin.vala b/src/plugins/media-export/rygel-media-export-plugin.vala
index 148b364..efee996 100644
--- a/src/plugins/media-export/rygel-media-export-plugin.vala
+++ b/src/plugins/media-export/rygel-media-export-plugin.vala
@@ -21,6 +21,9 @@
 using Rygel;
 using GUPnP;
 
+private const string TRACKER_PLUGIN = "Tracker";
+private const string OUR_PLUGIN = "MediaExport";
+
 /**
  * Simple plugin which exposes the media contents of a directory via UPnP.
  *
@@ -28,12 +31,41 @@ using GUPnP;
 public void module_init (PluginLoader loader) {
     var plugin = new MediaExport.Plugin ();
 
+    Idle.add (() => {
+       foreach (var loaded_plugin in loader.list_plugins ()) {
+            on_plugin_available (loaded_plugin, plugin);
+       }
+
+       loader.plugin_available.connect ((new_plugin) => {
+           on_plugin_available (new_plugin, plugin);
+       });
+
+       return false;
+    });
+
     loader.add_plugin (plugin);
 }
 
+public void on_plugin_available (Plugin plugin, Plugin our_plugin) {
+    if (plugin.name == TRACKER_PLUGIN &&
+        our_plugin.available == plugin.available) {
+        if (plugin.available) {
+            message ("Disabling plugin '%s' in favor of plugin '%s'",
+                     OUR_PLUGIN,
+                     TRACKER_PLUGIN);
+        } else {
+            message ("Plugin '%s' disabled, enabling '%s' plugin",
+                     TRACKER_PLUGIN,
+                     OUR_PLUGIN);
+        }
+
+        our_plugin.available = !plugin.available;
+    }
+}
+
 public class Rygel.MediaExport.Plugin : Rygel.MediaServerPlugin {
     public Plugin () {
-        base ("MediaExport", _("@REALNAME@'s media"));
+        base (OUR_PLUGIN, _("@REALNAME@'s media"));
     }
 
     public override MediaContainer? get_root_container (GUPnP.Context context) {



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