+
+ LV2_URID atom_int;
+ LV2_URID atom_float;
+
+ LV2_URID param_sampleRate;
+ LV2_URID bufsz_minBlockLength;
+ LV2_URID bufsz_maxBlockLength;
+ LV2_URID bufsz_sequenceSize;
+ LV2_URID ui_updateRate;
+
+ pthread_t worker_thread;
+ LV2_Worker_Interface *worker_iface;
+ static void *worker_func(void *vp);
+ void *worker_func();
+ void worker_start();
+ void worker_stop();
+ LV2_Worker_Status worker_schedule(uint32_t inp_size, const void *inp_data);
+ static LV2_Worker_Status lv2_worker_schedule(LV2_Worker_Schedule_Handle vp,
+ uint32_t inp_size, const void *inp_data);
+ LV2_Worker_Status worker_respond(uint32_t out_size, const void *out_data);
+ static LV2_Worker_Status lv2_worker_respond(LV2_Worker_Respond_Handle vp,
+ uint32_t out_size, const void *out_data);
+ PluginLV2Work *get_work();
+ void work_stop(PluginLV2Work *&work);
+ void worker_responses();
+
+ LV2_Worker_Schedule schedule;
+ PluginLV2Work *work_avail, *work_input;
+ PluginLV2Work *work_output, **work_tail;
+ pthread_mutex_t worker_lock;
+ pthread_cond_t worker_ready;
+ int worker_done;