[rygel] Passive loading of plugins
- From: Zeeshan Ali Khattak <zeeshanak src gnome org>
- To: svn-commits-list gnome org
- Subject: [rygel] Passive loading of plugins
- Date: Mon, 11 May 2009 10:05:08 -0400 (EDT)
commit 43e15c1b3d50aad28eb27d08e6d5e70fb06b5368
Author: Zeeshan Ali (Khattak) <zeeshanak gnome org>
Date: Mon May 4 19:22:57 2009 +0300
Passive loading of plugins
Dynamic modules can now register their plugins on the fly.
---
src/plugins/dvb/rygel-dvb-plugin.vala | 4 ++--
src/plugins/folder/rygel-folder-plugin.vala | 4 ++--
src/plugins/mediathek/rygel-mediathek-plugin.vala | 4 ++--
src/plugins/test/rygel-test-plugin.vala | 4 ++--
src/plugins/tracker/rygel-tracker-plugin.vala | 4 ++--
src/rygel/rygel-plugin-loader.vala | 17 +++++++++--------
6 files changed, 19 insertions(+), 18 deletions(-)
diff --git a/src/plugins/dvb/rygel-dvb-plugin.vala b/src/plugins/dvb/rygel-dvb-plugin.vala
index e72c9cf..194b9d7 100644
--- a/src/plugins/dvb/rygel-dvb-plugin.vala
+++ b/src/plugins/dvb/rygel-dvb-plugin.vala
@@ -29,7 +29,7 @@ using Gee;
using CStuff;
[ModuleInit]
-public Plugin load_plugin () {
+public void load_plugin (PluginLoader loader) {
Plugin plugin = new Plugin ("DVB");
// We only implement a ContentDirectory service
@@ -40,6 +40,6 @@ public Plugin load_plugin () {
plugin.add_resource (resource_info);
- return plugin;
+ loader.add_plugin (plugin);
}
diff --git a/src/plugins/folder/rygel-folder-plugin.vala b/src/plugins/folder/rygel-folder-plugin.vala
index 8b65ad1..9ffec3c 100644
--- a/src/plugins/folder/rygel-folder-plugin.vala
+++ b/src/plugins/folder/rygel-folder-plugin.vala
@@ -35,7 +35,7 @@ using GLib;
* * no monitoring
*/
[ModuleInit]
-public Plugin load_plugin() {
+public void load_plugin (PluginLoader loader) {
Plugin plugin = new Plugin ("Folder");
var resource_info = new ResourceInfo (ContentDirectory.UPNP_ID,
@@ -45,7 +45,7 @@ public Plugin load_plugin() {
plugin.add_resource (resource_info);
- return plugin;
+ loader.add_plugin (plugin);
}
public class Rygel.FolderContentDir : ContentDirectory {
diff --git a/src/plugins/mediathek/rygel-mediathek-plugin.vala b/src/plugins/mediathek/rygel-mediathek-plugin.vala
index ee83072..5e13c97 100644
--- a/src/plugins/mediathek/rygel-mediathek-plugin.vala
+++ b/src/plugins/mediathek/rygel-mediathek-plugin.vala
@@ -24,7 +24,7 @@ using Rygel;
using GUPnP;
[ModuleInit]
-public Plugin load_plugin () {
+public void load_plugin (PluginLoader loader) {
Plugin plugin = new Plugin ("ZDFMediathek");
var resource_info = new ResourceInfo (ContentDirectory.UPNP_ID,
@@ -34,7 +34,7 @@ public Plugin load_plugin () {
plugin.add_resource (resource_info);
- return plugin;
+ loader.add_plugin (plugin);
}
public class Rygel.MediathekContentDir : ContentDirectory {
diff --git a/src/plugins/test/rygel-test-plugin.vala b/src/plugins/test/rygel-test-plugin.vala
index 1ec9aee..d75f9a8 100644
--- a/src/plugins/test/rygel-test-plugin.vala
+++ b/src/plugins/test/rygel-test-plugin.vala
@@ -27,7 +27,7 @@ using Gee;
using CStuff;
[ModuleInit]
-public Plugin load_plugin () {
+public void load_plugin (PluginLoader loader) {
Plugin plugin = new Plugin ("Test");
// We only implement a ContentDirectory service
@@ -38,6 +38,6 @@ public Plugin load_plugin () {
plugin.add_resource (resource_info);
- return plugin;
+ loader.add_plugin (plugin);
}
diff --git a/src/plugins/tracker/rygel-tracker-plugin.vala b/src/plugins/tracker/rygel-tracker-plugin.vala
index 05072b1..0ca8923 100644
--- a/src/plugins/tracker/rygel-tracker-plugin.vala
+++ b/src/plugins/tracker/rygel-tracker-plugin.vala
@@ -25,7 +25,7 @@ using Gee;
using CStuff;
[ModuleInit]
-public Plugin load_plugin () {
+public void load_plugin (PluginLoader loader) {
Plugin plugin = new Plugin ("Tracker");
// We only implement a ContentDirectory service
@@ -45,6 +45,6 @@ public Plugin load_plugin () {
plugin.add_icon (icon_info);
- return plugin;
+ loader.add_plugin (plugin);
}
diff --git a/src/rygel/rygel-plugin-loader.vala b/src/rygel/rygel-plugin-loader.vala
index 4b280ad..f151fbe 100644
--- a/src/rygel/rygel-plugin-loader.vala
+++ b/src/rygel/rygel-plugin-loader.vala
@@ -30,7 +30,7 @@ using GUPnP;
* calls it and expects a Plugin instance in return.
*/
public class Rygel.PluginLoader : Object {
- private delegate Plugin LoadPluginFunc ();
+ private delegate void LoadPluginFunc (PluginLoader loader);
// Signals
public signal void plugin_available (Plugin plugin);
@@ -45,6 +45,10 @@ public class Rygel.PluginLoader : Object {
this.load_plugins_from_dir (dir);
}
+ public void add_plugin (Plugin plugin) {
+ this.plugin_available (plugin);
+ }
+
private void load_plugins_from_dir (File dir) {
string attributes = FILE_ATTRIBUTE_STANDARD_NAME + "," +
FILE_ATTRIBUTE_STANDARD_TYPE + "," +
@@ -132,15 +136,12 @@ public class Rygel.PluginLoader : Object {
return;
}
- debug ("Loaded plugin: '%s'\n", module.name());
+ // We don't want our modules to ever unload
+ module.make_resident ();
- Plugin plugin = load_plugin ();
- if (plugin != null) {
- // We don't want our modules to ever unload
- module.make_resident ();
+ load_plugin (this);
- this.plugin_available (plugin);
- }
+ debug ("Loaded plugin source: '%s'\n", module.name());
}
private static bool is_dir (File file) {
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]