X-Git-Url: https://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Fpluginlv2.C;h=c6ef09cbe2125257a6dc07c004b9402f11b750fd;hb=b2d226c1f41e84bbb3af93ebc0aa89f98ec0fd52;hp=7b7dc678e717b2dd1578bfb3f4f3cad2092852e4;hpb=a70cf593410cada9f0ca8bc515534c635a9cb495;p=goodguy%2Fcinelerra.git diff --git a/cinelerra-5.1/cinelerra/pluginlv2.C b/cinelerra-5.1/cinelerra/pluginlv2.C index 7b7dc678..c6ef09cb 100644 --- a/cinelerra-5.1/cinelerra/pluginlv2.C +++ b/cinelerra-5.1/cinelerra/pluginlv2.C @@ -52,6 +52,8 @@ PluginLV2::PluginLV2() schedule.schedule_work = lv2_worker_schedule; worker_iface = 0; worker_done = -1; pthread_mutex_init(&worker_lock, 0); + pthread_mutex_init(&startup_lock, 0); + pthread_mutex_lock(&startup_lock); pthread_cond_init(&worker_ready, 0); work_avail = 0; work_input = 0; work_output = 0; work_tail = &work_output; @@ -417,6 +419,7 @@ PluginLV2Work *PluginLV2::get_work() void *PluginLV2::worker_func() { pthread_mutex_lock(&worker_lock); + pthread_mutex_unlock(&startup_lock); for(;;) { while( !worker_done && !work_input ) pthread_cond_wait(&worker_ready, &worker_lock); @@ -440,6 +443,7 @@ void *PluginLV2::worker_func(void* vp) void PluginLV2::worker_start() { pthread_create(&worker_thread, 0, worker_func, this); + pthread_mutex_lock(&startup_lock); } void PluginLV2::worker_stop()