18#define CARLA_NATIVE_PLUGIN_LV2
21#include "CarlaLv2Utils.hpp"
22#include "CarlaMathUtils.hpp"
23#include "CarlaPipeUtils.hpp"
24#include "CarlaString.hpp"
31void Lv2PluginBaseClass<NativeTimeInfo>::clearTimeData()
noexcept
33 fLastPositionData.clear();
34 carla_zeroStruct(fTimeInfo);
59 const double sampleRate,
60 const char*
const bundlePath,
66#ifdef CARLA_PROPER_CPP11_SUPPORT
79 carla_zeroStruct(
fHost);
80#ifndef CARLA_PROPER_CPP11_SUPPORT
84 if (! loadedInProperHost())
90 String resourceDir(
water::File(bundlePath).getChildFile(
"resources").getFullPathName());
117 if (
fHost.resourceDir !=
nullptr)
119 delete[]
fHost.resourceDir;
120 fHost.resourceDir =
nullptr;
123 if (
fHost.uiName !=
nullptr)
125 delete[]
fHost.uiName;
126 fHost.uiName =
nullptr;
134 if (
fHost.resourceDir ==
nullptr)
139 carla_stderr(
"Plugin is missing something...");
168 if (fPorts.numParams > 0)
209 carla_stderr(
"Warning: Host forgot to call deactivate!");
226 if (! lv2_pre_run(frames))
232 if (fPorts.numMidiIns > 0 || fPorts.hasUI)
236 if (fPorts.numMidiIns > 0)
238 numEventPortsIn = fPorts.numMidiIns;
254 if (event ==
nullptr)
261 if (fWorker !=
nullptr)
265 const char*
const msg((
const char*)(event + 1));
266 const size_t msgSize = std::strlen(
msg);
267 fWorker->schedule_work(fWorker->handle,
static_cast<uint32_t>(msgSize + 1U),
msg);
277 if (event->body.type == fURIs.atomObject)
291 if (std::strcmp(
fDescriptor->label,
"audiofile") == 0) {
293 }
else if (std::strcmp(
fDescriptor->label,
"midifile") == 0) {
305 const char*
const filepath((
const char*)(fileobj + 1));
307 fWorker->schedule_work(fWorker->handle,
308 static_cast<uint32_t>(std::strlen(filepath) + 1U),
311 else if (obj->
body.
otype == fURIs.patchGet)
321 if (event->body.type != fURIs.midiEvent)
327 if (event->body.size > 4)
329 if (event->time.frames >= frames)
344 nativeEvent.
data[
j] = 0;
356 Ports::EventsOutData& mData(fPorts.eventsOutData[0]);
370 if (std::strcmp(
fDescriptor->label,
"audiofile") == 0) {
372 }
else if (std::strcmp(
fDescriptor->label,
"midifile") == 0) {
395 mData.offset +=
size;
430 carla_stderr2(
"Preview data buffer has wrong type '%c' (and size %u)", ptype, psize);
446 mData.offset +=
size;
458 const char*
const msg =
"_idle_";
459 const size_t msgSize = std::strlen(
msg);
460 fWorker->schedule_work(fWorker->handle,
static_cast<uint32_t>(msgSize + 1U),
msg);
465 const char*
const msg =
"quit";
466 const size_t msgSize = 5;
469 Ports::EventsOutData& mData(fPorts.eventsOutData[0]);
471 if (
sizeof(
LV2_Atom_Event) + msgSize <= mData.capacity - mData.offset)
477 aev->
body.
type = fURIs.carlaUiEvents;
481 mData.offset +=
size;
488 lv2_post_run(frames);
498 if (
fDescriptor->get_midi_program_count ==
nullptr)
507 if (midiProg ==
nullptr)
530 if (fPorts.paramsPtr[
i] !=
nullptr)
531 *fPorts.paramsPtr[
i] = fPorts.paramsLast[
i];
544 if (features ==
nullptr)
550 for (
int i=0; features[
i] !=
nullptr; ++
i)
558 if (makePath ==
nullptr || makePath->
path ==
nullptr)
561 if (freePath ==
nullptr)
562 freePath = fFreePath;
566 if (newpath ==
nullptr)
571 if (freePath !=
nullptr && freePath->
free_path !=
nullptr)
593 if (features !=
nullptr)
595 for (
int i=0; features[
i] !=
nullptr; ++
i)
610 fUridMap->map(fUridMap->handle,
"http://kxstudio.sf.net/ns/carla/file"),
616 if (freePath !=
nullptr && freePath->
free_path !=
nullptr)
633 fUridMap->map(fUridMap->handle,
"http://kxstudio.sf.net/ns/carla/chunk"),
635 std::strlen(state)+1,
658 const void*
const data = retrieve(handle,
659 fUridMap->map(fUridMap->handle,
"http://kxstudio.sf.net/ns/carla/file"),
669 if (features !=
nullptr)
671 for (
int i=0; features[
i] !=
nullptr; ++
i)
688 if (freePath !=
nullptr && freePath->
free_path !=
nullptr)
693 std::free(absolute_filename);
705 const void*
const data = retrieve(handle,
706 fUridMap->map(fUridMap->handle,
"http://kxstudio.sf.net/ns/carla/chunk"),
715 if (
type != fURIs.atomString)
727 const char*
const msg = (
const char*)
data;
729 if (std::strcmp(
msg,
"_idle_") == 0)
747 if (std::strncmp(
msg,
"control ", 8) == 0)
749 if (
fDescriptor->ui_set_parameter_value ==
nullptr)
752 if (
const char*
const msgSplit = std::strstr(
msg+8,
" "))
754 const char*
const msgIndex =
msg+8;
759 carla_zeroChars(strBufIndex, 8);
760 std::strncpy(strBufIndex, msgIndex,
static_cast<size_t>(msgSplit - msgIndex));
762 const int index = std::atoi(msgIndex) -
static_cast<int>(fPorts.indexOffset);
768 const CarlaScopedLocale csl;
769 value =
static_cast<float>(std::atof(msgSplit+1));
775 else if (std::strcmp(
msg,
"show") == 0)
779 else if (std::strcmp(
msg,
"hide") == 0)
783 else if (std::strcmp(
msg,
"idle") == 0)
787 else if (std::strcmp(
msg,
"quit") == 0)
793 carla_stdout(
"lv2_work unknown msg '%s'",
msg);
823 fUI.writeFunction = writeFunction;
826 if (
fHost.uiName !=
nullptr)
828 delete[]
fHost.uiName;
829 fHost.uiName =
nullptr;
835 for (
int i=0; features[
i] !=
nullptr; ++
i)
848 if (fUI.host !=
nullptr)
850 fHost.uiName = carla_strdup(fUI.host->plugin_human_id);
851 *widget = (LV2_External_UI_Widget_Compat*)
this;
858 for (
int i=0; features[
i] !=
nullptr; ++
i)
866 for (
int j=0; options[
j].
key != 0; ++
j)
871 const char*
const title((
const char*)options[
j].
value);
880 if (
fHost.uiName ==
nullptr)
889 if (
format != 0 || bufferSize !=
sizeof(
float) || buffer ==
nullptr)
891 if (portIndex < fPorts.indexOffset || ! fUI.isVisible)
893 if (
fDescriptor->ui_set_parameter_value ==
nullptr)
896 const float value(*(
const float*)buffer);
926 fUI.isVisible =
true;
934 fUI.isVisible =
false;
974 Ports::EventsOutData& mData(fPorts.eventsOutData[port]);
987 mData.offset +=
size;
998 if (fUI.writeFunction !=
nullptr && fUI.controller !=
nullptr)
999 fUI.writeFunction(fUI.controller, index+fPorts.indexOffset,
sizeof(
float), 0, &
value);
1007 if (fUI.touch !=
nullptr && fUI.touch->touch !=
nullptr)
1008 fUI.touch->touch(fUI.touch->handle, index+fPorts.indexOffset, touch);
1026 carla_stdout(
"TODO: handleUiCustomDataChanged %s %s",
key,
value);
1029 if (fUI.writeFunction ==
nullptr || fUI.controller ==
nullptr)
1035 fUI.isVisible =
false;
1040 if (fUI.host !=
nullptr && fUI.host->ui_closed !=
nullptr && fUI.controller !=
nullptr)
1041 fUI.host->ui_closed(fUI.controller);
1044 fUI.touch =
nullptr;
1045 fUI.writeFunction =
nullptr;
1046 fUI.controller =
nullptr;
1066 carla_debug(
"NativePlugin::handleDispatcher(%i, %i, " P_INTPTR ", %p, %f)",
1067 opcode, index,
value, ptr,
static_cast<double>(opt));
1096 if (fInlineDisplay !=
nullptr && fInlineDisplay->queue_draw !=
nullptr)
1098 fInlineDisplay->queue_draw(fInlineDisplay->handle);
1146 if (! fPorts.paramsOut[
i])
1151 if (fPorts.paramsPtr[
i] !=
nullptr)
1152 *fPorts.paramsPtr[
i] =
value;
1183 #define handlePtr ((NativePlugin*)handle)
1207 return handlePtr->handleWriteMidiEvent(event);
1217 handlePtr->handleUiParameterTouch(index, touch);
1247 CARLA_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(
NativePlugin)
1255 carla_debug(
"lv2_instantiate(%p, %g, %s, %p)", lv2Descriptor, sampleRate, bundlePath, features);
1258 const char* pluginLabel =
nullptr;
1260 if (std::strncmp(lv2Descriptor->
URI,
"http://kxstudio.sf.net/carla/plugins/", 37) == 0)
1261 pluginLabel = lv2Descriptor->
URI+37;
1263 if (pluginLabel ==
nullptr)
1265 carla_stderr(
"Failed to find carla native plugin with URI \"%s\"", lv2Descriptor->
URI);
1269 carla_debug(
"lv2_instantiate() - looking up label \"%s\"", pluginLabel);
1273 for (LinkedList<const NativePluginDescriptor*>::Itenerator it = plm.
descs.begin2(); it.valid(); it.next())
1278 if (std::strcmp(tmpDesc->
label, pluginLabel) == 0)
1280 pluginDesc = tmpDesc;
1285 if (pluginDesc ==
nullptr)
1287 carla_stderr(
"Failed to find carla native plugin with label \"%s\"", pluginLabel);
1293 if (! plugin->
init())
1295 carla_stderr(
"Failed to init plugin");
1303#define instancePtr ((NativePlugin*)instance)
1307 instancePtr->lv2_connect_port(port, dataLocation);
1312 carla_debug(
"lv2_activate(%p)", instance);
1323 carla_debug(
"lv2_deactivate(%p)", instance);
1329 carla_debug(
"lv2_cleanup(%p)", instance);
1336 carla_debug(
"lv2_get_options(%p, %p)", instance, options);
1342 carla_debug(
"lv2_set_options(%p, %p)", instance, options);
1348 carla_debug(
"lv2_get_program(%p, %i)", instance, index);
1354 carla_debug(
"lv2_select_program(%p, %i, %i)", instance, bank, program);
1355 return instancePtr->lv2_select_program(bank, program);
1360 carla_debug(
"lv2_save(%p, %p, %p, %i, %p)", instance, store, handle, flags, features);
1361 return instancePtr->lv2_save(store, handle, flags, features);
1366 carla_debug(
"lv2_restore(%p, %p, %p, %i, %p)", instance, retrieve, handle, flags, features);
1367 return instancePtr->lv2_restore(retrieve, handle, flags, features);
1372 carla_debug(
"work(%p, %p, %p, %u, %p)", instance, respond, handle,
size,
data);
1378 carla_debug(
"work_resp(%p, %u, %p)", instance,
size, body);
1390 carla_debug(
"lv2_extension_data(\"%s\")",
uri);
1422 carla_debug(
"lv2ui_instantiate(..., %p, %p, %p)", writeFunction,
controller, widget, features);
1426 for (
int i=0; features[
i] !=
nullptr; ++
i)
1435 if (plugin ==
nullptr)
1437 carla_stderr(
"Host doesn't support instance-access, cannot show UI");
1446#define uiPtr ((NativePlugin*)ui)
1450 carla_debug(
"lv2ui_port_event(%p, %i, %i, %i, %p)",
ui, portIndex, bufferSize,
format, buffer);
1451 uiPtr->lv2ui_port_event(portIndex, bufferSize,
format, buffer);
1456 carla_debug(
"lv2ui_cleanup(%p)",
ui);
1457 uiPtr->lv2ui_cleanup();
1462 carla_debug(
"lv2ui_select_program(%p, %i, %i)",
ui, bank, program);
1463 uiPtr->lv2ui_select_program(bank, program);
1468 return uiPtr->lv2ui_idle();
1473 carla_debug(
"lv2ui_show(%p)",
ui);
1474 return uiPtr->lv2ui_show();
1479 carla_debug(
"lv2ui_hide(%p)",
ui);
1480 return uiPtr->lv2ui_hide();
1485 carla_stdout(
"lv2ui_extension_data(\"%s\")",
uri);
1510 carla_debug(
"lv2_descriptor(%i)", index);
1514 if (index >= plm.
descs.count())
1516 carla_debug(
"lv2_descriptor(%i) - out of bounds", index);
1519 if (index < plm.lv2Descs.count())
1521 carla_debug(
"lv2_descriptor(%i) - found previously allocated", index);
1522 return plm.lv2Descs.getAt(index,
nullptr);
1529 tmpURI =
"http://kxstudio.sf.net/carla/plugins/";
1530 tmpURI += pluginDesc->
label;
1532 carla_debug(
"lv2_descriptor(%i) - not found, allocating new with uri \"%s\"", index, (
const char*)tmpURI);
1535 carla_strdup(tmpURI),
1553 plm.lv2Descs.append(lv2Desc);
1561 carla_debug(
"lv2ui_descriptor(%i)", index);
1564 "http://kxstudio.sf.net/carla/ui-ext",
1571 return (index == 0) ? &lv2UiExtDesc :
nullptr;
#define LV2_EXTERNAL_UI_DEPRECATED_URI
Definition lv2_external_ui.h:30
struct _LV2_External_UI_Host LV2_External_UI_Host
#define LV2_EXTERNAL_UI__Host
Definition lv2_external_ui.h:26
static int lv2ui_idle(LV2UI_Handle ui)
Definition CarlaBridgeSingleLV2.cpp:664
static const void * lv2_extension_data(const char *uri)
Definition CarlaBridgeSingleLV2.cpp:608
static const void * lv2ui_extension_data(const char *uri)
Definition CarlaBridgeSingleLV2.cpp:681
static LV2_Handle lv2_instantiate(const LV2_Descriptor *lv2Descriptor, double sampleRate, const char *bundlePath, const LV2_Feature *const *features)
Definition CarlaBridgeSingleLV2.cpp:565
static void lv2ui_cleanup(LV2UI_Handle ui)
Definition CarlaBridgeSingleLV2.cpp:658
#define instancePtr
Definition CarlaBridgeSingleLV2.cpp:578
static void lv2_connect_port(LV2_Handle instance, uint32_t port, void *dataLocation)
Definition CarlaBridgeSingleLV2.cpp:580
static void lv2ui_port_event(LV2UI_Handle ui, uint32_t portIndex, uint32_t bufferSize, uint32_t format, const void *buffer)
Definition CarlaBridgeSingleLV2.cpp:653
static void lv2_run(LV2_Handle instance, uint32_t sampleCount)
Definition CarlaBridgeSingleLV2.cpp:591
static void lv2_cleanup(LV2_Handle instance)
Definition CarlaBridgeSingleLV2.cpp:602
static LV2UI_Handle lv2ui_instantiate(const LV2UI_Descriptor *, const char *, const char *, LV2UI_Write_Function writeFunction, LV2UI_Controller controller, LV2UI_Widget *widget, const LV2_Feature *const *features)
Definition CarlaBridgeSingleLV2.cpp:622
static int lv2ui_show(LV2UI_Handle ui)
Definition CarlaBridgeSingleLV2.cpp:669
static void lv2_deactivate(LV2_Handle instance)
Definition CarlaBridgeSingleLV2.cpp:596
static void lv2_activate(LV2_Handle instance)
Definition CarlaBridgeSingleLV2.cpp:585
static int lv2ui_hide(LV2UI_Handle ui)
Definition CarlaBridgeSingleLV2.cpp:675
#define uiPtr
Definition CarlaBridgeSingleLV2.cpp:651
#define CARLA_SAFE_EXCEPTION_RETURN(msg, ret)
Definition CarlaDefines.h:231
#define CARLA_SAFE_ASSERT_CONTINUE(cond)
Definition CarlaDefines.h:189
#define CARLA_SAFE_ASSERT_RETURN(cond, ret)
Definition CarlaDefines.h:190
#define P_INTPTR
Definition CarlaDefines.h:138
#define CARLA_SAFE_ASSERT_BREAK(cond)
Definition CarlaDefines.h:188
#define CARLA_PLUGIN_EXPORT
Definition CarlaDefines.h:308
#define CARLA_SAFE_ASSERT(cond)
Definition CarlaDefines.h:182
class MasterUI * ui
Definition Connection.cpp:39
Controller controller
Definition main.C:5
#define noexcept
Definition DistrhoDefines.h:72
#define nullptr
Definition DistrhoDefines.h:75
opcode
Definition Spc_Cpu.h:173
CAdPlugDatabase::CRecord::RecordType type
Definition adplugdb.cpp:93
static intptr_t host_dispatcher(NativeHostHandle, NativeHostDispatcherOpcode, int32_t, intptr_t, void *, float)
Definition carla-lv2-export.cpp:238
static void lv2ui_select_program(LV2UI_Handle ui, uint32_t bank, uint32_t program)
Definition carla-lv2-ui.cpp:383
static LV2_Worker_Status lv2_work(LV2_Handle instance, LV2_Worker_Respond_Function respond, LV2_Worker_Respond_Handle handle, uint32_t size, const void *data)
Definition carla-lv2.cpp:1370
static uint32_t lv2_get_options(LV2_Handle instance, LV2_Options_Option *options)
Definition carla-lv2.cpp:1334
static const void * lv2_extension_data(const char *uri)
Definition carla-lv2.cpp:1388
static LV2_Handle lv2_instantiate(const LV2_Descriptor *lv2Descriptor, double sampleRate, const char *bundlePath, const LV2_Feature *const *features)
Definition carla-lv2.cpp:1253
static LV2_Worker_Status lv2_work_resp(LV2_Handle instance, uint32_t size, const void *body)
Definition carla-lv2.cpp:1376
static LV2_State_Status lv2_restore(LV2_Handle instance, LV2_State_Retrieve_Function retrieve, LV2_State_Handle handle, uint32_t flags, const LV2_Feature *const *features)
Definition carla-lv2.cpp:1364
static void lv2_select_program(LV2_Handle instance, uint32_t bank, uint32_t program)
Definition carla-lv2.cpp:1352
static const char *const kPathForCarlaFiles
Definition carla-lv2.cpp:28
static void lv2_connect_port(LV2_Handle instance, uint32_t port, void *dataLocation)
Definition carla-lv2.cpp:1305
static void lv2_run(LV2_Handle instance, uint32_t sampleCount)
Definition carla-lv2.cpp:1316
static void lv2_cleanup(LV2_Handle instance)
Definition carla-lv2.cpp:1327
static const LV2_Inline_Display_Image_Surface * lv2_idisp_render(LV2_Handle instance, uint32_t w, uint32_t h)
Definition carla-lv2.cpp:1382
static LV2_State_Status lv2_save(LV2_Handle instance, LV2_State_Store_Function store, LV2_State_Handle handle, uint32_t flags, const LV2_Feature *const *features)
Definition carla-lv2.cpp:1358
static void lv2_deactivate(LV2_Handle instance)
Definition carla-lv2.cpp:1321
static void lv2_activate(LV2_Handle instance)
Definition carla-lv2.cpp:1310
static uint32_t lv2_set_options(LV2_Handle instance, const LV2_Options_Option *options)
Definition carla-lv2.cpp:1340
static const LV2_Program_Descriptor * lv2_get_program(LV2_Handle instance, uint32_t index)
Definition carla-lv2.cpp:1346
#define handlePtr
Definition carla-vst.cpp:882
Definition carla-lv2.cpp:54
static void host_ui_parameter_changed(NativeHostHandle handle, uint32_t index, float value)
Definition carla-lv2.cpp:1210
PreviewData fPreviewData
Definition carla-lv2.cpp:1174
CarlaString fLoadedFile
Definition carla-lv2.cpp:1173
bool fIsActive
Definition carla-vst.cpp:832
static const char * host_ui_open_file(NativeHostHandle handle, bool isDir, const char *title, const char *filter)
Definition carla-lv2.cpp:1230
volatile bool fNeedsNotifyFileChanged
Definition carla-lv2.cpp:1175
LV2_Program_Descriptor fProgramDesc
Definition carla-lv2.cpp:1163
void lv2_cleanup()
Definition carla-lv2.cpp:205
bool handleWriteMidiEvent(const NativeMidiEvent *const event)
Definition carla-lv2.cpp:962
const LV2_Program_Descriptor * lv2_get_program(const uint32_t index)
Definition carla-lv2.cpp:494
static const uint32_t kMaxMidiEvents
Definition carla-lv2.cpp:56
static void host_ui_parameter_touch(NativeHostHandle handle, uint32_t index, bool touch)
Definition carla-lv2.cpp:1215
void saveLastProjectPathIfPossible(const LV2_Feature *const *const features)
Definition carla-lv2.cpp:542
LV2_State_Status lv2_save(const LV2_State_Store_Function store, const LV2_State_Handle handle, const uint32_t, const LV2_Feature *const *const features)
Definition carla-lv2.cpp:580
bool init()
Definition carla-lv2.cpp:132
static double host_get_sample_rate(NativeHostHandle handle)
Definition carla-lv2.cpp:1190
intptr_t handleDispatcher(const NativeHostDispatcherOpcode opcode, const int32_t index, const intptr_t value, void *const ptr, const float opt)
Definition carla-lv2.cpp:1061
void handleUiHide() override
Definition carla-lv2.cpp:929
LV2_Worker_Status lv2_work_resp(uint32_t, const void *)
Definition carla-lv2.cpp:800
void updateParameterOutputs()
Definition carla-lv2.cpp:1140
void handleUiRun() const override
Definition carla-lv2.cpp:915
void lv2ui_port_event(uint32_t portIndex, uint32_t bufferSize, uint32_t format, const void *buffer) const
Definition carla-lv2.cpp:887
void handleUiParameterChanged(const uint32_t index, const float value) const
Definition carla-lv2.cpp:993
static void host_ui_closed(NativeHostHandle handle)
Definition carla-lv2.cpp:1225
static uint32_t host_get_buffer_size(NativeHostHandle handle)
Definition carla-lv2.cpp:1185
void handleBufferSizeChanged(const uint32_t bufferSize) override
Definition carla-lv2.cpp:944
void handlePreviewBufferData(const char type, const uint32_t size, const void *const buffer) noexcept
Definition carla-lv2.cpp:1016
void lv2_deactivate()
Definition carla-lv2.cpp:195
void handleUiClosed()
Definition carla-lv2.cpp:1033
static void host_ui_custom_data_changed(NativeHostHandle handle, const char *key, const char *value)
Definition carla-lv2.cpp:1220
static bool host_write_midi_event(NativeHostHandle handle, const NativeMidiEvent *event)
Definition carla-lv2.cpp:1205
static bool host_is_offline(NativeHostHandle handle)
Definition carla-lv2.cpp:1195
void lv2_activate()
Definition carla-lv2.cpp:183
const NativePluginDescriptor *const fDescriptor
Definition carla-lv2.cpp:1162
const char * handleUiSaveFile(const bool, const char *const, const char *const) const
Definition carla-lv2.cpp:1055
void handleParameterValueChanged(const uint32_t index, const float value) override
Definition carla-lv2.cpp:939
void lv2ui_instantiate(LV2UI_Write_Function writeFunction, LV2UI_Controller controller, LV2UI_Widget *widget, const LV2_Feature *const *features)
Definition carla-lv2.cpp:820
const LV2_Inline_Display_Image_Surface * lv2_idisp_render(const uint32_t width, const uint32_t height)
Definition carla-lv2.cpp:805
const bool kIgnoreParameters
Definition carla-lv2.cpp:1166
void handleUiCustomDataChanged(const char *const key, const char *const value) const
Definition carla-lv2.cpp:1024
void lv2_run(const uint32_t frames)
Definition carla-lv2.cpp:224
void handleUiParameterTouch(const uint32_t index, const bool touch) const
Definition carla-lv2.cpp:1002
void handleUiShow() override
Definition carla-lv2.cpp:921
LV2_State_Status lv2_restore(const LV2_State_Retrieve_Function retrieve, const LV2_State_Handle handle, uint32_t flags, const LV2_Feature *const *const features)
Definition carla-lv2.cpp:645
void handleUiResize(const uint32_t, const uint32_t) const
Definition carla-lv2.cpp:1011
void cleanupLastProjectPath()
Definition carla-lv2.cpp:537
static const char * host_ui_save_file(NativeHostHandle handle, bool isDir, const char *title, const char *filter)
Definition carla-lv2.cpp:1235
const char * handleUiOpenFile(const bool, const char *const, const char *const) const
Definition carla-lv2.cpp:1049
NativeMidiEvent fMidiEvents[kMaxMidiEvents]
Definition carla-lv2.cpp:1170
NativePluginHandle fHandle
Definition carla-lv2.cpp:1160
void lv2ui_select_program(uint32_t bank, uint32_t program) const
Definition carla-lv2.cpp:902
NativeHostDescriptor fHost
Definition carla-lv2.cpp:1161
void handleSampleRateChanged(const double sampleRate) override
Definition carla-lv2.cpp:952
static intptr_t host_dispatcher(NativeHostHandle handle, NativeHostDispatcherOpcode opcode, int32_t index, intptr_t value, void *ptr, float opt)
Definition carla-lv2.cpp:1240
uint32_t fMidiEventCount
Definition carla-lv2.cpp:1169
volatile int fPluginNeedsIdle
Definition carla-lv2.cpp:1176
~NativePlugin()
Definition carla-lv2.cpp:113
static const NativeTimeInfo * host_get_time_info(NativeHostHandle handle)
Definition carla-lv2.cpp:1200
void lv2_select_program(uint32_t bank, uint32_t program)
Definition carla-lv2.cpp:517
CarlaString fLastProjectPath
Definition carla-lv2.cpp:1172
NativePlugin(const NativePluginDescriptor *const desc, const double sampleRate, const char *const bundlePath, const LV2_Feature *const *const features)
Definition carla-lv2.cpp:58
LV2_Worker_Status lv2_work(LV2_Worker_Respond_Function, LV2_Worker_Respond_Handle, uint32_t, const void *data)
Definition carla-lv2.cpp:725
LV2_Atom_Forge fAtomForge
Definition carla-lv2.cpp:1168
int fWorkerUISignal
Definition carla-lv2.cpp:1178
UINT_D64 w
Definition inflate.c:942
register unsigned j
Definition inflate.c:1576
register unsigned i
Definition inflate.c:1575
static char filename[]
Definition features.c:5
NativeHostDispatcherOpcode
Definition CarlaNative.h:115
void * NativeHostHandle
Definition CarlaNative.h:36
struct _NativePluginDescriptor NativePluginDescriptor
void * NativePluginHandle
Definition CarlaNative.h:37
@ NATIVE_HOST_OPCODE_UI_UNAVAILABLE
Definition CarlaNative.h:122
@ NATIVE_HOST_OPCODE_RELOAD_ALL
Definition CarlaNative.h:121
@ NATIVE_HOST_OPCODE_HOST_IDLE
Definition CarlaNative.h:123
@ NATIVE_HOST_OPCODE_RELOAD_PARAMETERS
Definition CarlaNative.h:119
@ NATIVE_HOST_OPCODE_UPDATE_PARAMETER
Definition CarlaNative.h:117
@ NATIVE_HOST_OPCODE_PREVIEW_BUFFER_DATA
Definition CarlaNative.h:130
@ NATIVE_HOST_OPCODE_NULL
Definition CarlaNative.h:116
@ NATIVE_HOST_OPCODE_REQUEST_IDLE
Definition CarlaNative.h:127
@ NATIVE_HOST_OPCODE_UI_RESIZE
Definition CarlaNative.h:129
@ NATIVE_HOST_OPCODE_QUEUE_INLINE_DISPLAY
Definition CarlaNative.h:125
@ NATIVE_HOST_OPCODE_UPDATE_MIDI_PROGRAM
Definition CarlaNative.h:118
@ NATIVE_HOST_OPCODE_UI_TOUCH_PARAMETER
Definition CarlaNative.h:126
@ NATIVE_HOST_OPCODE_GET_FILE_PATH
Definition CarlaNative.h:128
@ NATIVE_HOST_OPCODE_RELOAD_MIDI_PROGRAMS
Definition CarlaNative.h:120
@ NATIVE_HOST_OPCODE_INTERNAL_PLUGIN
Definition CarlaNative.h:124
@ NATIVE_PLUGIN_USES_TIME
Definition CarlaNative.h:65
@ NATIVE_PLUGIN_USES_STATE
Definition CarlaNative.h:64
@ NATIVE_PLUGIN_NEEDS_UI_OPEN_SAVE
Definition CarlaNative.h:61
@ NATIVE_PLUGIN_HAS_INLINE_DISPLAY
Definition CarlaNative.h:67
@ NATIVE_PLUGIN_REQUESTS_IDLE
Definition CarlaNative.h:69
@ NATIVE_PLUGIN_HAS_UI
Definition CarlaNative.h:58
@ NATIVE_PARAMETER_IS_OUTPUT
Definition CarlaNative.h:90
@ NATIVE_PLUGIN_OPCODE_BUFFER_SIZE_CHANGED
Definition CarlaNative.h:104
@ NATIVE_PLUGIN_OPCODE_SAMPLE_RATE_CHANGED
Definition CarlaNative.h:105
@ NATIVE_PLUGIN_OPCODE_IDLE
Definition CarlaNative.h:109
@ NATIVE_PLUGIN_CATEGORY_SYNTH
Definition CarlaNative.h:44
#define LV2_ATOM_BODY(atom)
Definition atom.h:98
#define LV2_ATOM_CONTENTS(type, atom)
Definition atom.h:85
static PuglViewHint int value
Definition pugl.h:1708
static const char * title
Definition pugl.h:1747
static int int height
Definition pugl.h:1594
static int width
Definition pugl.h:1593
static void lv2_atom_forge_init(LV2_Atom_Forge *forge, const LV2_URID_Map *map)
Definition atom-forge.h:143
static LV2_Atom_Forge_Ref lv2_atom_forge_urid(LV2_Atom_Forge *forge, LV2_URID id)
Definition atom-forge.h:414
static void lv2_atom_forge_pop(LV2_Atom_Forge *forge, LV2_Atom_Forge_Frame *frame)
Definition atom-forge.h:201
static void lv2_atom_forge_set_buffer(LV2_Atom_Forge *forge, uint8_t *buf, size_t size)
Definition atom-forge.h:242
static LV2_Atom_Forge_Ref lv2_atom_forge_path(LV2_Atom_Forge *forge, const char *path, uint32_t len)
Definition atom-forge.h:459
static LV2_Atom_Forge_Ref lv2_atom_forge_key(LV2_Atom_Forge *forge, LV2_URID key)
Definition atom-forge.h:635
static LV2_Atom_Forge_Ref lv2_atom_forge_object(LV2_Atom_Forge *forge, LV2_Atom_Forge_Frame *frame, LV2_URID id, LV2_URID otype)
Definition atom-forge.h:574
static LV2_Atom_Forge_Ref lv2_atom_forge_vector(LV2_Atom_Forge *forge, uint32_t child_size, uint32_t child_type, uint32_t n_elems, const void *elems)
Definition atom-forge.h:506
#define LV2_INLINEDISPLAY__interface
Definition inline-display.h:36
#define LV2_INSTANCE_ACCESS_URI
http://lv2plug.in/ns/ext/instance-access
Definition instance-access.h:30
CARLA_PLUGIN_EXPORT const LV2_Descriptor * lv2_descriptor(uint32_t index)
Definition carla-lv2.cpp:1508
void * LV2_Handle
Definition lv2.h:133
#define LV2_OPTIONS__interface
http://lv2plug.in/ns/ext/options#interface
Definition options.h:38
#define LV2_OPTIONS__options
http://lv2plug.in/ns/ext/options#options
Definition options.h:39
void * LV2_State_Handle
Opaque handle for state save/restore.
Definition state.h:54
#define LV2_STATE__interface
http://lv2plug.in/ns/ext/state#interface
Definition state.h:41
LV2_State_Status(* LV2_State_Store_Function)(LV2_State_Handle handle, uint32_t key, const void *value, size_t size, uint32_t type, uint32_t flags)
Definition state.h:147
#define LV2_STATE__mapPath
http://lv2plug.in/ns/ext/state#mapPath
Definition state.h:45
#define LV2_STATE__freePath
http://lv2plug.in/ns/ext/state#freePath
Definition state.h:43
#define LV2_STATE__makePath
http://lv2plug.in/ns/ext/state#makePath
Definition state.h:44
const void *(* LV2_State_Retrieve_Function)(LV2_State_Handle handle, uint32_t key, size_t *size, uint32_t *type, uint32_t *flags)
Definition state.h:173
LV2_State_Status
Definition state.h:104
@ LV2_STATE_IS_PORTABLE
Definition state.h:89
@ LV2_STATE_IS_POD
Definition state.h:78
@ LV2_STATE_SUCCESS
Definition state.h:105
@ LV2_STATE_ERR_NO_FEATURE
Definition state.h:109
@ LV2_STATE_ERR_BAD_TYPE
Definition state.h:107
@ LV2_STATE_ERR_UNKNOWN
Definition state.h:106
@ LV2_STATE_ERR_NO_PROPERTY
Definition state.h:110
void * LV2UI_Controller
Definition ui.h:104
CARLA_PLUGIN_EXPORT const LV2UI_Descriptor * lv2ui_descriptor(uint32_t index)
Definition CarlaBridgeSingleLV2.cpp:740
#define LV2_UI__idleInterface
http://lv2plug.in/ns/extensions/ui#idleInterface
Definition ui.h:53
#define LV2_UI__touch
http://lv2plug.in/ns/extensions/ui#touch
Definition ui.h:69
void * LV2UI_Widget
Definition ui.h:90
void(* LV2UI_Write_Function)(LV2UI_Controller controller, uint32_t port_index, uint32_t buffer_size, uint32_t port_protocol, const void *buffer)
Definition ui.h:130
#define LV2_UI__windowTitle
http://lv2plug.in/ns/extensions/ui#windowTitle
Definition ui.h:72
#define LV2_UI__showInterface
http://lv2plug.in/ns/extensions/ui#showInterface
Definition ui.h:68
void * LV2UI_Handle
Definition ui.h:97
uint32_t LV2_URID
Definition urid.h:58
static uint32_t lv2_atom_pad_size(uint32_t size)
Definition atom-util.h:48
static int lv2_atom_object_get(const LV2_Atom_Object *object,...)
Definition atom-util.h:420
#define LV2_ATOM_SEQUENCE_FOREACH(seq, iter)
Definition atom-util.h:132
LV2_Worker_Status(* LV2_Worker_Respond_Function)(LV2_Worker_Respond_Handle handle, uint32_t size, const void *data)
Definition worker.h:62
LV2_Worker_Status
Definition worker.h:46
#define LV2_WORKER__interface
http://lv2plug.in/ns/ext/worker#interface
Definition worker.h:36
void * LV2_Worker_Respond_Handle
Definition worker.h:53
@ LV2_WORKER_SUCCESS
Definition worker.h:47
@ LV2_WORKER_ERR_UNKNOWN
Definition worker.h:48
JSAMPIMAGE data
Definition jpeglib.h:945
#define LV2_PROGRAMS__Interface
Definition lv2_programs.h:33
#define LV2_PROGRAMS__UIInterface
Definition lv2_programs.h:34
struct _LV2_Programs_Interface LV2_Programs_Interface
struct _LV2_Programs_UI_Interface LV2_Programs_UI_Interface
struct _LV2_Program_Descriptor LV2_Program_Descriptor
int int32_t
Definition mid.cpp:97
unsigned int uint32_t
Definition mid.cpp:100
unsigned char uint8_t
Definition mid.cpp:98
const char * msg
Definition missing_descriptor.c:20
#define false
Definition ordinals.h:83
const char *const label
Definition CarlaNative.h:258
union LV2_Atom_Event::@152045145256255172273117355230252206245037176275 time
int64_t frames
Definition atom.h:213
LV2_Atom body
Definition atom.h:216
Definition atom-forge.h:102
uint32_t otype
Definition atom.h:199
LV2_Atom_Object_Body body
Definition atom.h:206
LV2_Atom atom
Definition atom.h:244
uint32_t size
Definition atom.h:107
uint32_t type
Definition atom.h:108
const char * URI
Definition lv2.h:188
Definition inline-display.h:50
Definition inline-display.h:75
LV2_URID key
Definition options.h:97
void(* free_path)(LV2_State_Free_Path_Handle handle, char *path)
Definition state.h:377
LV2_State_Free_Path_Handle handle
Definition state.h:365
char *(* path)(LV2_State_Make_Path_Handle handle, const char *path)
Definition state.h:354
LV2_State_Make_Path_Handle handle
Definition state.h:328
LV2_State_Map_Path_Handle handle
Definition state.h:280
char *(* absolute_path)(LV2_State_Map_Path_Handle handle, const char *abstract_path)
Definition state.h:317
char *(* abstract_path)(LV2_State_Map_Path_Handle handle, const char *absolute_path)
Definition state.h:301
Definition CarlaNative.h:218
const NativeTimeInfo *(* get_time_info)(NativeHostHandle handle)
Definition CarlaNative.h:228
void(* ui_parameter_changed)(NativeHostHandle handle, uint32_t index, float value)
Definition CarlaNative.h:231
double(* get_sample_rate)(NativeHostHandle handle)
Definition CarlaNative.h:225
bool(* write_midi_event)(NativeHostHandle handle, const NativeMidiEvent *event)
Definition CarlaNative.h:229
NativeHostHandle handle
Definition CarlaNative.h:219
uintptr_t uiParentId
Definition CarlaNative.h:222
void(* ui_closed)(NativeHostHandle handle)
Definition CarlaNative.h:234
intptr_t(* dispatcher)(NativeHostHandle handle, NativeHostDispatcherOpcode opcode, int32_t index, intptr_t value, void *ptr, float opt)
Definition CarlaNative.h:239
const char *(* ui_open_file)(NativeHostHandle handle, bool isDir, const char *title, const char *filter)
Definition CarlaNative.h:236
uint32_t(* get_buffer_size)(NativeHostHandle handle)
Definition CarlaNative.h:224
bool(* is_offline)(NativeHostHandle handle)
Definition CarlaNative.h:226
const char * uiName
Definition CarlaNative.h:221
void(* ui_custom_data_changed)(NativeHostHandle handle, const char *key, const char *value)
Definition CarlaNative.h:233
const char *(* ui_save_file)(NativeHostHandle handle, bool isDir, const char *title, const char *filter)
Definition CarlaNative.h:237
const char * resourceDir
Definition CarlaNative.h:220
Definition CarlaNative.h:204
Definition CarlaNative.h:169
uint32_t time
Definition CarlaNative.h:170
uint8_t port
Definition CarlaNative.h:171
uint8_t size
Definition CarlaNative.h:172
uint8_t data[4]
Definition CarlaNative.h:173
Definition CarlaNative.h:176
uint32_t bank
Definition CarlaNative.h:177
uint32_t program
Definition CarlaNative.h:178
const char * name
Definition CarlaNative.h:179
Definition CarlaNative.h:197
Definition carla-base.cpp:36
static PluginListManager & getInstance()
Definition carla-base.cpp:101
LinkedList< const NativePluginDescriptor * > descs
Definition carla-base.cpp:107
Definition carla-lv2.cpp:37
char type
Definition carla-lv2.cpp:38
PreviewData()
Definition carla-lv2.cpp:43
bool shouldSend
Definition carla-lv2.cpp:41
const void * buffer
Definition carla-lv2.cpp:40
uint32_t size
Definition carla-lv2.cpp:39
ZCONST char * key
Definition crypt.c:587
uch h[RAND_HEAD_LEN]
Definition crypt.c:459
#define void
Definition unzip.h:396
_WDL_CSTRING_PREFIX void INT_PTR const char * format
Definition wdlcstring.h:263