diff options
Diffstat (limited to 'src/worker.c')
-rw-r--r-- | src/worker.c | 4 |
1 files changed, 4 insertions, 0 deletions
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; } |