From 398b7e32e003e17e9805e4c1dbfa12fc59373c17 Mon Sep 17 00:00:00 2001 From: David Robillard Date: Sun, 31 Jul 2016 16:25:42 -0400 Subject: Do not call plugin work() method concurrently --- src/worker.c | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'src/worker.c') diff --git a/src/worker.c b/src/worker.c index 79b220c..9035733 100644 --- a/src/worker.c +++ b/src/worker.c @@ -50,8 +50,10 @@ worker_func(void* data) jack_ringbuffer_read(worker->requests, (char*)buf, size); + zix_sem_wait(&jalv->work_lock); worker->iface->work( jalv->instance->lv2_handle, jalv_worker_respond, worker, size, buf); + zix_sem_post(&jalv->work_lock); } free(buf); @@ -105,8 +107,10 @@ jalv_worker_schedule(LV2_Worker_Schedule_Handle handle, zix_sem_post(&worker->sem); } else { // Execute work immediately in this thread + zix_sem_wait(&jalv->work_lock); worker->iface->work( jalv->instance->lv2_handle, jalv_worker_respond, worker, size, data); + zix_sem_post(&jalv->work_lock); } return LV2_WORKER_SUCCESS; } -- cgit v1.2.1