From 2920fd5f170179e4e1a880856068d3d8b5f0f420 Mon Sep 17 00:00:00 2001 From: David Robillard Date: Mon, 30 May 2022 19:47:52 -0400 Subject: Move JalvWorker definition to worker.h --- src/jalv_internal.h | 15 +-------------- src/worker.h | 35 +++++++++++++++++++++++++++++++++-- 2 files changed, 34 insertions(+), 16 deletions(-) diff --git a/src/jalv_internal.h b/src/jalv_internal.h index 11bf05e..f07241b 100644 --- a/src/jalv_internal.h +++ b/src/jalv_internal.h @@ -10,10 +10,10 @@ #include "options.h" #include "symap.h" #include "urids.h" +#include "worker.h" #include "zix/ring.h" #include "zix/sem.h" -#include "zix/thread.h" #include "lilv/lilv.h" #include "serd/serd.h" @@ -54,19 +54,6 @@ typedef struct Jalv Jalv; typedef enum { JALV_RUNNING, JALV_PAUSE_REQUESTED, JALV_PAUSED } JalvPlayState; -typedef struct { - ZixRing* requests; ///< Requests to the worker - ZixRing* responses; ///< Responses from the worker - void* response; ///< Worker response buffer - ZixSem* lock; ///< Lock for plugin work() method - bool* exit; ///< Pointer to exit flag - ZixSem sem; ///< Worker semaphore - ZixThread thread; ///< Worker thread - LV2_Handle handle; ///< Plugin handle - const LV2_Worker_Interface* iface; ///< Plugin worker interface - bool threaded; ///< Run work in another thread -} JalvWorker; - typedef struct { LV2_Feature map_feature; LV2_Feature unmap_feature; diff --git a/src/worker.h b/src/worker.h index e3adeec..606278f 100644 --- a/src/worker.h +++ b/src/worker.h @@ -1,14 +1,39 @@ -// Copyright 2007-2016 David Robillard +// Copyright 2007-2022 David Robillard // SPDX-License-Identifier: ISC -#include "jalv_internal.h" +#ifndef JALV_WORKER_H +#define JALV_WORKER_H + +#include "zix/ring.h" +#include "zix/sem.h" +#include "zix/thread.h" #include "lilv/lilv.h" +#include "lv2/core/lv2.h" #include "lv2/worker/worker.h" #include #include +#ifdef __cplusplus +extern "C" { +#endif + +// Worker for running non-realtime tasks for plugins + +typedef struct { + ZixRing* requests; ///< Requests to the worker + ZixRing* responses; ///< Responses from the worker + void* response; ///< Worker response buffer + ZixSem* lock; ///< Lock for plugin work() method + bool* exit; ///< Pointer to exit flag + ZixSem sem; ///< Worker semaphore + ZixThread thread; ///< Worker thread + LV2_Handle handle; ///< Plugin handle + const LV2_Worker_Interface* iface; ///< Plugin worker interface + bool threaded; ///< Run work in another thread +} JalvWorker; + void jalv_worker_init(JalvWorker* worker, const LV2_Worker_Interface* iface, @@ -27,3 +52,9 @@ jalv_worker_schedule(LV2_Worker_Schedule_Handle handle, void jalv_worker_emit_responses(JalvWorker* worker, LilvInstance* instance); + +#ifdef __cplusplus +} // extern "C" +#endif + +#endif // JALV_WORKER_H -- cgit v1.2.1