lv2 fixes, dcraw upgrade, arch/libdv
[goodguy/history.git] / cinelerra-5.1 / cinelerra / pluginlv2client.C
index 6163f2dfd9867e1c7e16550d465acc15e51c785a..3e204acb44cf551ebd06677bdc46409a8067dea0 100644 (file)
 #include "bchash.h"
 #include "clip.h"
 #include "cstrdup.h"
+#include "edl.h"
+#include "edlsession.h"
 #include "file.h"
+#include "filesystem.h"
 #include "filexml.h"
 #include "language.h"
 #include "mainerror.h"
@@ -164,8 +167,15 @@ NEW_WINDOW_MACRO(PluginLV2Client, PluginLV2ClientWindow)
 
 int PluginLV2Client::init_lv2()
 {
+       int bfrsz = 4096;
+       EDL *edl = server->edl;
+       if( edl ) {
+               PlaybackConfig *playback_config = edl->session->playback_config;
+               bfrsz = playback_config->aconfig->fragment_size;
+       }
        int sample_rate = get_project_samplerate();
-       return PluginLV2::init_lv2(config, sample_rate);
+       if( sample_rate < 64 ) sample_rate = 48000;
+       return PluginLV2::init_lv2(config, sample_rate, bfrsz);
 }
 
 int PluginLV2Client::load_configuration()
@@ -332,8 +342,9 @@ PluginLV2BlackList::~PluginLV2BlackList()
 
 int PluginLV2BlackList::is_badboy(const char *uri)
 {
+       FileSystem fs;
        for( int i=size(); --i>=0; )
-               if( !strcmp(uri, get(i)) ) return 1;
+               if( !fs.test_filter(uri, get(i)) ) return 1;
        return 0;
 }
 
@@ -390,7 +401,7 @@ PluginLV2ParentUI::PluginLV2ParentUI(Plugin *plugin)
        output_bfr = new Condition(0, "PluginLV2ParentUI::output_bfr", 1);
        client = 0;
        gui = 0;
-       hidden = 1;
+       hidden = -1;
 }
 
 PluginLV2ParentUI::~PluginLV2ParentUI()
@@ -407,6 +418,8 @@ void PluginLV2ParentUI::start_parent(PluginLV2Client *client)
        char bfr[len];  memset(bfr, 0, len);
        open_bfr_t *open_bfr = (open_bfr_t *)bfr;
        open_bfr->sample_rate = client->get_project_samplerate();
+       PlaybackConfig *playback_config = client->server->edl->session->playback_config;
+       open_bfr->bfrsz = playback_config->aconfig->fragment_size;
        strcpy(open_bfr->path, path);
        send_child(LV2_OPEN, open_bfr, len);
        PluginLV2ClientConfig &conf = client->config;
@@ -426,6 +439,8 @@ int PluginLV2ParentUI::handle_parent()
                hidden = 1;
                break; }
        case LV2_SHOW: {
+               if( hidden < 0 )
+                       gui->lv2_ui_enable();
                hidden = 0;
                break; }
        case LV2_SHMID: {