changeset 309:b04ce1c98b6f trunk

[svn] Plugin cleanup functionality, via giacomo.
author nenolod
date Sat, 17 Dec 2005 12:36:29 -0800
parents 511354316db4
children 0b993b8d7806
files Plugins/Output/OSS/OSS.c Plugins/Output/alsa/alsa.c Plugins/Output/crossfade/crossfade.c Plugins/Output/disk_writer/disk_writer.c Plugins/Output/esd/esd.c audacious/plugin.h audacious/pluginenum.c
diffstat 7 files changed, 12 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/Plugins/Output/OSS/OSS.c	Sat Dec 17 12:09:33 2005 -0800
+++ b/Plugins/Output/OSS/OSS.c	Sat Dec 17 12:36:29 2005 -0800
@@ -29,6 +29,7 @@
     NULL,
     NULL,                       /* Description */
     oss_init,
+    NULL,
     oss_about,
     oss_configure,
     oss_get_volume,
--- a/Plugins/Output/alsa/alsa.c	Sat Dec 17 12:09:33 2005 -0800
+++ b/Plugins/Output/alsa/alsa.c	Sat Dec 17 12:36:29 2005 -0800
@@ -24,6 +24,7 @@
 	NULL,
 	NULL,
 	alsa_init,
+	NULL,
 	alsa_about,
 	alsa_configure,
 	alsa_get_volume,
--- a/Plugins/Output/crossfade/crossfade.c	Sat Dec 17 12:09:33 2005 -0800
+++ b/Plugins/Output/crossfade/crossfade.c	Sat Dec 17 12:36:29 2005 -0800
@@ -75,6 +75,7 @@
   NULL,
   "Crossfade Plugin " VERSION,
   xfade_init,
+  NULL,
   xfade_about,
   xfade_configure,
   xfade_get_volume,
--- a/Plugins/Output/disk_writer/disk_writer.c	Sat Dec 17 12:09:33 2005 -0800
+++ b/Plugins/Output/disk_writer/disk_writer.c	Sat Dec 17 12:36:29 2005 -0800
@@ -84,6 +84,7 @@
 	NULL,
 	NULL,			/* Description */
 	disk_init,
+	NULL,
 	NULL,			/* about */
 	disk_configure,		/* configure */
 	NULL,			/* get_volume */
--- a/Plugins/Output/esd/esd.c	Sat Dec 17 12:09:33 2005 -0800
+++ b/Plugins/Output/esd/esd.c	Sat Dec 17 12:36:29 2005 -0800
@@ -26,6 +26,7 @@
     NULL,
     NULL,                       /* Description */
     esdout_init,
+    NULL,
     esdout_about,
     esdout_configure,
     esdout_get_volume,
--- a/audacious/plugin.h	Sat Dec 17 12:09:33 2005 -0800
+++ b/audacious/plugin.h	Sat Dec 17 12:36:29 2005 -0800
@@ -81,6 +81,7 @@
     gchar *description;
 
     void (*init) (void);
+    void (*cleanup) (void);
     void (*about) (void);
     void (*configure) (void);
     void (*get_volume) (gint * l, gint * r);
--- a/audacious/pluginenum.c	Sat Dec 17 12:09:33 2005 -0800
+++ b/audacious/pluginenum.c	Sat Dec 17 12:36:29 2005 -0800
@@ -378,6 +378,12 @@
 
     for (node = get_output_list(); node; node = g_list_next(node)) {
         op = OUTPUT_PLUGIN(node->data);
+        if (op && op->cleanup) {
+            op->cleanup();
+            GDK_THREADS_LEAVE();
+            while (g_main_iteration(FALSE));
+            GDK_THREADS_ENTER();
+        }
         g_module_close(op->handle);
     }