summaryrefslogtreecommitdiff
path: root/plugins.c
diff options
context:
space:
mode:
Diffstat (limited to 'plugins.c')
-rw-r--r--plugins.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/plugins.c b/plugins.c
index adc1ded2..bb12d3dc 100644
--- a/plugins.c
+++ b/plugins.c
@@ -887,6 +887,9 @@ plug_connect_all (void) {
if (plug->plugin->connect () < 0) {
fprintf (stderr, "plugin %s failed to connect to dependencies, deactivated.\n", plug->plugin->name);
+ if (plug->plugin->disconnect) {
+ plug->plugin->disconnect ();
+ }
if (plug->plugin->stop) {
plug->plugin->stop ();
}
@@ -914,6 +917,22 @@ plug_connect_all (void) {
}
void
+plug_disconnect_all (void) {
+ trace ("plug_disconnect_all\n");
+ plugin_t *plug;
+ plugin_t *prev = NULL;
+ for (plug = plugins; plug;) {
+ if (plug->plugin->disconnect) {
+ if (plug->plugin->disconnect () < 0) {
+ trace ("plugin %s failed to disconnect\n", plug->plugin->name);
+ }
+ }
+ prev = plug;
+ plug = plug->next;
+ }
+}
+
+void
plug_unload_all (void) {
trace ("plug_unload_all\n");
plugin_t *p;