}
+PluginLV2BlackList::PluginLV2BlackList(const char *path)
+{
+ set_array_delete();
+ char lv2_blacklist_path[BCTEXTLEN];
+ sprintf(lv2_blacklist_path, "%s/%s", File::get_cindat_path(), path);
+ FILE *bfp = fopen(lv2_blacklist_path, "r");
+ if( !bfp ) return;
+ while( fgets(lv2_blacklist_path, sizeof(lv2_blacklist_path), bfp) ) {
+ if( lv2_blacklist_path[0] == '#' ) continue;
+ int len = strlen(lv2_blacklist_path);
+ if( len > 0 && lv2_blacklist_path[len-1] == '\n' )
+ lv2_blacklist_path[len-1] = 0;
+ if( !lv2_blacklist_path[0] ) continue;
+ append(cstrdup(lv2_blacklist_path));
+ }
+ fclose(bfp);
+}
+
+PluginLV2BlackList::~PluginLV2BlackList()
+{
+ remove_all_objects();
+}
+
+int PluginLV2BlackList::is_badboy(const char *uri)
+{
+ for( int i=size(); --i>=0; )
+ if( !strcmp(uri, get(i)) ) return 1;
+ return 0;
+}
+
PluginServer* MWindow::new_lv2_server(MWindow *mwindow, const char *name)
{
return new PluginServer(mwindow, name, PLUGIN_TYPE_LV2);
int MWindow::init_lv2_index(MWindow *mwindow, Preferences *preferences, FILE *fp)
{
printf("init lv2 index:\n");
+ PluginLV2BlackList blacklist("lv2_blacklist.txt");
+
LilvWorld *world = lilv_world_new();
lilv_world_load_all(world);
const LilvPlugins *all_plugins = lilv_world_get_all_plugins(world);
LILV_FOREACH(plugins, i, all_plugins) {
const LilvPlugin *lilv = lilv_plugins_get(all_plugins, i);
const char *uri = lilv_node_as_uri(lilv_plugin_get_uri(lilv));
+ if( blacklist.is_badboy(uri) ) continue;
+printf("LOAD: %s\n", uri);
PluginServer server(mwindow, uri, PLUGIN_TYPE_LV2);
int result = server.open_plugin(1, preferences, 0, 0);
if( !result ) {
return 0;
}
-
-// stub in parent
-int PluginLV2ChildUI::handle_child() { return 0; }
-void PluginLV2UI::reset_gui() {}
-
ForkChild *PluginLV2ParentUI::new_fork()
{
return new PluginLV2ChildUI();
}
+// stub in parent
+int PluginLV2ChildUI::child_iteration(int64_t usec) { return -1; }
+int PluginLV2ChildUI::send_host(int64_t token, const void *data, int bytes) { return -1; }
#else
#include "mwindow.h"