void enable_vis_plugin(int i, gboolean enable) { GList *node = g_list_nth(vp_data->vis_list, i); VisPlugin *vp; if (!node || !(node->data)) return; vp = (VisPlugin *) node->data; if (enable && !g_list_find(vp_data->enabled_list, vp)) { vp_data->enabled_list = g_list_append(vp_data->enabled_list, vp); if (vp->init) vp->init(); if(get_input_playing() && vp->playback_start) vp->playback_start(); } else if (!enable && g_list_find(vp_data->enabled_list, vp)) { vp_data->enabled_list = g_list_remove(vp_data->enabled_list, vp); if(get_input_playing() && vp->playback_stop) vp->playback_stop(); if (vp->cleanup) vp->cleanup(); } }
void vis_playback_stop(void) { GList *node = vp_data->enabled_list; VisPlugin *vp; if(!vp_data->playback_started) return; while(node) { vp = node->data; if(vp->playback_stop) vp->playback_stop(); node = g_list_next(node); } vp_data->playback_started = FALSE; }