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_enable_from_stringified_list(gchar * list) { gchar **plugins, *base; GList *node; gint i; VisPlugin *vp; if (!list || !strcmp(list, "")) return; plugins = g_strsplit(list, ",", 0); for(i = 0; plugins[i]; i++) { node = vp_data->vis_list; while (node) { base = xmms_g_basename(((VisPlugin *) node->data)->filename); if (!strcmp(plugins[i], base)) { vp = node->data; vp_data->enabled_list = g_list_append(vp_data->enabled_list, (VisPlugin *) vp); if(vp->init) vp->init(); if(get_input_playing() && vp->playback_start) vp->playback_start(); } node = node->next; } } g_strfreev(plugins); }