changeset 4677:04c53c9d261b

Add provision for Interface plugins.
author William Pitcock <nenolod@atheme.org>
date Sun, 29 Jun 2008 12:59:51 -0500
parents ed6755dbd2f1
children 66dea2610f1c
files src/audacious/plugin.h src/audacious/pluginenum.c
diffstat 2 files changed, 11 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/audacious/plugin.h	Sun Jun 29 12:56:25 2008 -0500
+++ b/src/audacious/plugin.h	Sun Jun 29 12:59:51 2008 -0500
@@ -45,6 +45,7 @@
 #include "audacious/playlist_container.h"
 #include "audacious/main.h"
 #include "audacious/preferences.h"
+#include "audacious/interface.h"
 
 #define PLUGIN(x)         ((Plugin *)(x))
 #define INPUT_PLUGIN(x)   ((InputPlugin *)(x))
@@ -191,6 +192,7 @@
     GeneralPlugin **gp_list;
     VisPlugin **vp_list;
     DiscoveryPlugin **dp_list;
+    Interface *interface;
 } PluginHeader;
 
 #define PLUGIN_MAGIC 0x8EAC8DE2
@@ -1028,6 +1030,9 @@
 #define SIMPLE_DISCOVER_PLUGIN(name, dp_list) \
     DECLARE_PLUGIN(name, NULL, NULL, NULL, NULL, NULL, NULL, NULL, dp_list)
 
+#define SIMPLE_INTERFACE_PLUGIN(name, interface) \
+    DECLARE_PLUGIN(name, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, interface)
+
 /* Sadly, this is the most we can generalize out of the disparate
    plugin structs usable with typecasts - descender */
 struct _Plugin {
--- a/src/audacious/pluginenum.c	Sun Jun 29 12:56:25 2008 -0500
+++ b/src/audacious/pluginenum.c	Sun Jun 29 12:59:51 2008 -0500
@@ -714,6 +714,9 @@
             discovery_plugin_init(PLUGIN((header->dp_list)[i]));
         }
     }
+
+    if (header->interface)
+        interface_register(header->interface);
 }
 
 void
@@ -723,6 +726,9 @@
 
     g_return_if_fail(header->priv_assoc != NULL);
 
+    if (header->interface)
+        interface_deregister(header->interface);
+
     module = header->priv_assoc->handle;
 
     g_free(header->priv_assoc->filename);