Browse Source

Add dummy LV2 resize-port support

tags/1.9.4
falkTX 11 years ago
parent
commit
c0bc032dc1
2 changed files with 60 additions and 25 deletions
  1. +57
    -24
      source/backend/plugin/Lv2Plugin.cpp
  2. +3
    -1
      source/utils/CarlaLv2Utils.hpp

+ 57
- 24
source/backend/plugin/Lv2Plugin.cpp View File

@@ -116,30 +116,31 @@ const uint32_t kFeatureIdIsLive = 6;
const uint32_t kFeatureIdLogs = 7;
const uint32_t kFeatureIdOptions = 8;
const uint32_t kFeatureIdPrograms = 9;
const uint32_t kFeatureIdRtMemPool = 10;
const uint32_t kFeatureIdRtMemPoolOld = 11;
const uint32_t kFeatureIdStateMakePath = 12;
const uint32_t kFeatureIdStateMapPath = 13;
const uint32_t kFeatureIdStrictBounds = 14;
const uint32_t kFeatureIdUriMap = 15;
const uint32_t kFeatureIdUridMap = 16;
const uint32_t kFeatureIdUridUnmap = 17;
const uint32_t kFeatureIdWorker = 18;
const uint32_t kFeatureCountPlugin = 19;
const uint32_t kFeatureIdUiDataAccess = 19;
const uint32_t kFeatureIdUiInstanceAccess = 20;
const uint32_t kFeatureIdUiIdle = 21;
const uint32_t kFeatureIdUiFixedSize = 22;
const uint32_t kFeatureIdUiMakeResident = 23;
const uint32_t kFeatureIdUiNoUserResize = 24;
const uint32_t kFeatureIdUiParent = 25;
const uint32_t kFeatureIdUiPortMap = 26;
const uint32_t kFeatureIdUiPortSubscribe = 27;
const uint32_t kFeatureIdUiResize = 28;
const uint32_t kFeatureIdUiTouch = 29;
const uint32_t kFeatureIdExternalUi = 30;
const uint32_t kFeatureIdExternalUiOld = 31;
const uint32_t kFeatureCountAll = 32;
const uint32_t kFeatureIdResizePort = 10;
const uint32_t kFeatureIdRtMemPool = 11;
const uint32_t kFeatureIdRtMemPoolOld = 12;
const uint32_t kFeatureIdStateMakePath = 13;
const uint32_t kFeatureIdStateMapPath = 14;
const uint32_t kFeatureIdStrictBounds = 15;
const uint32_t kFeatureIdUriMap = 16;
const uint32_t kFeatureIdUridMap = 17;
const uint32_t kFeatureIdUridUnmap = 18;
const uint32_t kFeatureIdWorker = 19;
const uint32_t kFeatureCountPlugin = 20;
const uint32_t kFeatureIdUiDataAccess = 20;
const uint32_t kFeatureIdUiInstanceAccess = 21;
const uint32_t kFeatureIdUiIdle = 22;
const uint32_t kFeatureIdUiFixedSize = 23;
const uint32_t kFeatureIdUiMakeResident = 24;
const uint32_t kFeatureIdUiNoUserResize = 25;
const uint32_t kFeatureIdUiParent = 26;
const uint32_t kFeatureIdUiPortMap = 27;
const uint32_t kFeatureIdUiPortSubscribe = 28;
const uint32_t kFeatureIdUiResize = 29;
const uint32_t kFeatureIdUiTouch = 30;
const uint32_t kFeatureIdExternalUi = 31;
const uint32_t kFeatureIdExternalUiOld = 32;
const uint32_t kFeatureCountAll = 33;

// -----------------------------------------------------

@@ -460,6 +461,9 @@ public:
if (fFeatures[kFeatureIdPrograms] != nullptr && fFeatures[kFeatureIdPrograms]->data != nullptr)
delete (LV2_Programs_Host*)fFeatures[kFeatureIdPrograms]->data;

if (fFeatures[kFeatureIdResizePort] != nullptr && fFeatures[kFeatureIdResizePort]->data != nullptr)
delete (LV2_Resize_Port_Resize*)fFeatures[kFeatureIdResizePort]->data;

if (fFeatures[kFeatureIdRtMemPool] != nullptr && fFeatures[kFeatureIdRtMemPool]->data != nullptr)
delete (LV2_RtMemPool_Pool*)fFeatures[kFeatureIdRtMemPool]->data;

@@ -3756,6 +3760,18 @@ public:

// -------------------------------------------------------------------

LV2_Resize_Port_Status handleResizePort(const uint32_t index, const size_t size)
{
CARLA_SAFE_ASSERT_RETURN(size > 0, LV2_RESIZE_PORT_ERR_UNKNOWN);
carla_debug("Lv2Plugin::handleResizePort(%i, " P_SIZE ")", index, size);

// TODO
return LV2_RESIZE_PORT_ERR_NO_SPACE;
(void)index;
}

// -------------------------------------------------------------------

LV2_State_Status handleStateStore(const uint32_t key, const void* const value, const size_t size, const uint32_t type, const uint32_t flags)
{
CARLA_SAFE_ASSERT_RETURN(key != CARLA_URI_MAP_ID_NULL, LV2_STATE_ERR_NO_PROPERTY);
@@ -4193,6 +4209,10 @@ public:
programsFt->handle = this;
programsFt->program_changed = carla_lv2_program_changed;

LV2_Resize_Port_Resize* const rsPortFt = new LV2_Resize_Port_Resize;
rsPortFt->data = this;
rsPortFt->resize = carla_lv2_resize_port;

LV2_RtMemPool_Pool* const rtMemPoolFt = new LV2_RtMemPool_Pool;
lv2_rtmempool_init(rtMemPoolFt);

@@ -4251,6 +4271,8 @@ public:
fFeatures[kFeatureIdPrograms]->URI = LV2_PROGRAMS__Host;
fFeatures[kFeatureIdPrograms]->data = programsFt;

//kFeatureIdResizePort

fFeatures[kFeatureIdRtMemPool]->URI = LV2_RTSAFE_MEMORY_POOL__Pool;
fFeatures[kFeatureIdRtMemPool]->data = rtMemPoolFt;

@@ -4839,6 +4861,17 @@ private:
((Lv2Plugin*)handle)->handleProgramChanged(index);
}

// -------------------------------------------------------------------
// Resize Port Feature

static LV2_Resize_Port_Status carla_lv2_resize_port(LV2_Resize_Port_Feature_Data data, uint32_t index, size_t size)
{
CARLA_SAFE_ASSERT_RETURN(data != nullptr, LV2_RESIZE_PORT_ERR_UNKNOWN);
carla_debug("carla_lv2_program_changed(%p, %i, " P_SIZE ")", data, index, size);

return ((Lv2Plugin*)data)->handleResizePort(index, size);
}

// -------------------------------------------------------------------
// State Feature



+ 3
- 1
source/utils/CarlaLv2Utils.hpp View File

@@ -41,7 +41,7 @@
#include "lv2/port-groups.h"
#include "lv2/port-props.h"
#include "lv2/presets.h"
// resize-port
#include "lv2/resize-port.h"
#include "lv2/state.h"
#include "lv2/time.h"
#include "lv2/ui.h"
@@ -1289,6 +1289,8 @@ bool is_lv2_feature_supported(const LV2_URI uri)
return true;
if (std::strcmp(uri, LV2_PROGRAMS__Host) == 0)
return true;
if (std::strcmp(uri, LV2_RESIZE_PORT__resize) == 0)
return true;
if (std::strcmp(uri, LV2_RTSAFE_MEMORY_POOL__Pool) == 0)
return true;
if (std::strcmp(uri, LV2_RTSAFE_MEMORY_POOL_DEPRECATED_URI) == 0)


Loading…
Cancel
Save