X-Git-Url: https://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Fpluginlv2client.C;fp=cinelerra-5.1%2Fcinelerra%2Fpluginlv2client.C;h=6163f2dfd9867e1c7e16550d465acc15e51c785a;hb=02595181cff2bce97eb19634bc3855778cb8c3b6;hp=7ccb6ef8f2aad633d36c2a0c931fc7034c4872b0;hpb=114b45040c8027671cbe50e7d6cecb28bf73b35f;p=goodguy%2Fhistory.git diff --git a/cinelerra-5.1/cinelerra/pluginlv2client.C b/cinelerra-5.1/cinelerra/pluginlv2client.C index 7ccb6ef8..6163f2df 100644 --- a/cinelerra-5.1/cinelerra/pluginlv2client.C +++ b/cinelerra-5.1/cinelerra/pluginlv2client.C @@ -307,6 +307,36 @@ int PluginLV2Client::process_realtime(int64_t size, } +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); @@ -323,6 +353,8 @@ PluginClient *PluginServer::new_lv2_plugin() 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); @@ -330,6 +362,8 @@ int MWindow::init_lv2_index(MWindow *mwindow, Preferences *preferences, FILE *fp 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 ) { @@ -424,16 +458,14 @@ int PluginLV2ParentUI::hide() 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"