[rygel] core,plugins: Don't create disabled plugin
- From: Zeeshan Ali Khattak <zeeshanak src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [rygel] core,plugins: Don't create disabled plugin
- Date: Wed, 19 Jan 2011 22:46:01 +0000 (UTC)
commit f70d5de22829c346836045f520557c66267064b2
Author: Zeeshan Ali (Khattak) <zeeshanak gnome org>
Date: Wed Jan 19 00:56:39 2011 +0200
core,plugins: Don't create disabled plugin
Now its the responsibility of module to make sure if the plugin its about
to create/add is disabled by the user.
.../external/rygel-external-plugin-factory.vala | 6 ++++
.../gst-launch/rygel-gst-launch-plugin.vala | 7 ++++
.../media-export/rygel-media-export-plugin.vala | 6 ++++
src/plugins/mediathek/rygel-mediathek-plugin.vala | 7 ++++
src/plugins/mpris/rygel-mpris-plugin-factory.vala | 6 ++++
src/plugins/playbin/rygel-playbin-plugin.vala | 7 ++++
src/plugins/test/rygel-test-plugin.vala | 7 ++++
.../tracker/rygel-tracker-plugin-factory.vala | 7 ++++
src/rygel/rygel-plugin-loader.vala | 32 ++++++++++++-------
9 files changed, 73 insertions(+), 12 deletions(-)
---
diff --git a/src/plugins/external/rygel-external-plugin-factory.vala b/src/plugins/external/rygel-external-plugin-factory.vala
index fe315c4..b56faf8 100644
--- a/src/plugins/external/rygel-external-plugin-factory.vala
+++ b/src/plugins/external/rygel-external-plugin-factory.vala
@@ -116,6 +116,12 @@ public class Rygel.External.PluginFactory {
}
private async void load_plugin (string service_name) throws IOError {
+ if (this.loader.plugin_disabled (service_name)) {
+ message ("Plugin '%s' disabled by user, ignoring..", service_name);
+
+ return;
+ }
+
if (service_name.has_prefix (GRILO_UPNP_PREFIX)) {
// We don't entertain UPnP sources
return;
diff --git a/src/plugins/gst-launch/rygel-gst-launch-plugin.vala b/src/plugins/gst-launch/rygel-gst-launch-plugin.vala
index 636e890..70a72e5 100644
--- a/src/plugins/gst-launch/rygel-gst-launch-plugin.vala
+++ b/src/plugins/gst-launch/rygel-gst-launch-plugin.vala
@@ -24,6 +24,13 @@ using Rygel;
using Gee;
public void module_init (PluginLoader loader) {
+ if (loader.plugin_disabled (GstLaunch.Plugin.NAME)) {
+ message ("Plugin '%s' disabled by user, ignoring..",
+ GstLaunch.Plugin.NAME);
+
+ return;
+ }
+
var plugin = new GstLaunch.Plugin ();
loader.add_plugin (plugin);
diff --git a/src/plugins/media-export/rygel-media-export-plugin.vala b/src/plugins/media-export/rygel-media-export-plugin.vala
index 956c807..bdf30f3 100644
--- a/src/plugins/media-export/rygel-media-export-plugin.vala
+++ b/src/plugins/media-export/rygel-media-export-plugin.vala
@@ -29,6 +29,12 @@ private const string OUR_PLUGIN = "MediaExport";
*
*/
public void module_init (PluginLoader loader) {
+ if (loader.plugin_disabled (OUR_PLUGIN)) {
+ message ("Plugin '%s' disabled by user, ignoring..", OUR_PLUGIN);
+
+ return;
+ }
+
MediaExport.Plugin plugin;
try {
diff --git a/src/plugins/mediathek/rygel-mediathek-plugin.vala b/src/plugins/mediathek/rygel-mediathek-plugin.vala
index 9a2efe9..87a8fa5 100644
--- a/src/plugins/mediathek/rygel-mediathek-plugin.vala
+++ b/src/plugins/mediathek/rygel-mediathek-plugin.vala
@@ -24,6 +24,13 @@ using Rygel;
using GUPnP;
public void module_init (PluginLoader loader) {
+ if (loader.plugin_disabled (Mediathek.Plugin.NAME)) {
+ message ("Plugin '%s' disabled by user, ignoring..",
+ Mediathek.Plugin.NAME);
+
+ return;
+ }
+
var plugin = new Mediathek.Plugin ();
loader.add_plugin (plugin);
diff --git a/src/plugins/mpris/rygel-mpris-plugin-factory.vala b/src/plugins/mpris/rygel-mpris-plugin-factory.vala
index f5f2674..f74db09 100644
--- a/src/plugins/mpris/rygel-mpris-plugin-factory.vala
+++ b/src/plugins/mpris/rygel-mpris-plugin-factory.vala
@@ -106,6 +106,12 @@ public class Rygel.MPRIS.PluginFactory {
}
private async void load_plugin_n_handle_error (string service_name) {
+ if (loader.plugin_disabled (service_name)) {
+ message ("Plugin '%s' disabled by user, ignoring..", service_name);
+
+ return;
+ }
+
try {
yield this.load_plugin (service_name);
} catch (IOError error) {
diff --git a/src/plugins/playbin/rygel-playbin-plugin.vala b/src/plugins/playbin/rygel-playbin-plugin.vala
index 77a0ec1..39ebd4b 100644
--- a/src/plugins/playbin/rygel-playbin-plugin.vala
+++ b/src/plugins/playbin/rygel-playbin-plugin.vala
@@ -26,6 +26,13 @@ using Rygel;
using Gee;
public void module_init (PluginLoader loader) {
+ if (loader.plugin_disabled (Playbin.Plugin.NAME)) {
+ message ("Plugin '%s' disabled by user, ignoring..",
+ Playbin.Plugin.NAME);
+
+ return;
+ }
+
var plugin = new Playbin.Plugin ();
loader.add_plugin (plugin);
diff --git a/src/plugins/test/rygel-test-plugin.vala b/src/plugins/test/rygel-test-plugin.vala
index d659b21..7a30451 100644
--- a/src/plugins/test/rygel-test-plugin.vala
+++ b/src/plugins/test/rygel-test-plugin.vala
@@ -26,6 +26,13 @@ using Rygel;
using Gee;
public void module_init (PluginLoader loader) {
+ if (loader.plugin_disabled (Rygel.Test.Plugin.NAME)) {
+ message ("Plugin '%s' disabled by user, ignoring..",
+ Rygel.Test.Plugin.NAME);
+
+ return;
+ }
+
var plugin = new Rygel.Test.Plugin ();
loader.add_plugin (plugin);
diff --git a/src/plugins/tracker/rygel-tracker-plugin-factory.vala b/src/plugins/tracker/rygel-tracker-plugin-factory.vala
index 720402b..79b7549 100644
--- a/src/plugins/tracker/rygel-tracker-plugin-factory.vala
+++ b/src/plugins/tracker/rygel-tracker-plugin-factory.vala
@@ -28,6 +28,13 @@ using Gee;
private Tracker.PluginFactory plugin_factory;
public void module_init (PluginLoader loader) {
+ if (loader.plugin_disabled (Tracker.Plugin.NAME)) {
+ message ("Plugin '%s' disabled by user, ignoring..",
+ Tracker.Plugin.NAME);
+
+ return;
+ }
+
try {
plugin_factory = new Tracker.PluginFactory (loader);
} catch (IOError err) {
diff --git a/src/rygel/rygel-plugin-loader.vala b/src/rygel/rygel-plugin-loader.vala
index 8ee5f8b..68eaf2f 100644
--- a/src/rygel/rygel-plugin-loader.vala
+++ b/src/rygel/rygel-plugin-loader.vala
@@ -28,7 +28,9 @@ using Gee;
* Responsible for plugin loading. Probes for shared library files in a specific
* directry and tries to grab a function with a specific name and signature,
* calls it. The loaded module can then add plugins to Rygel by calling the
- * add_plugin method.
+ * add_plugin method. NOTE: The module SHOULD make sure that plugin is not
+ * disabled by user using plugin_disabled method before creating the plugin
+ * instance and resources related to that instance.
*/
public class Rygel.PluginLoader : Object {
private delegate void ModuleInitFunc (PluginLoader loader);
@@ -60,21 +62,27 @@ public class Rygel.PluginLoader : Object {
this.load_modules_from_dir.begin (dir);
}
- public void add_plugin (Plugin plugin) {
- bool enabled = true;
+ /**
+ * Checks if a plugin is disabled by user
+ *
+ * @param name the name of plugin to check for.
+ *
+ * return true if plugin is disabled, false if not.
+ */
+ public bool plugin_disabled (string name) {
+ var enabled = true;
try {
var config = MetaConfig.get_default ();
- enabled = config.get_enabled (plugin.name);
+ enabled = config.get_enabled (name);
} catch (GLib.Error err) {}
- if (enabled) {
- message (_("New plugin '%s' available"), plugin.name);
- this.plugin_hash.set (plugin.name, plugin);
- this.plugin_available (plugin);
- } else {
- debug ("Plugin '%s' disabled in user configuration; ignoring..",
- plugin.name);
- }
+ return !enabled;
+ }
+
+ public void add_plugin (Plugin plugin) {
+ message (_("New plugin '%s' available"), plugin.name);
+ this.plugin_hash.set (plugin.name, plugin);
+ this.plugin_available (plugin);
}
public Plugin? get_plugin_by_name (string name) {
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]