Browse Source

Add support for the old rtmempool extension, so we can load zynadd

tags/1.9.4
falkTX 11 years ago
parent
commit
3fa0c73537
5 changed files with 73 additions and 38 deletions
  1. +32
    -22
      source/backend/plugin/Lv2Plugin.cpp
  2. +14
    -0
      source/includes/lv2/lv2_rtmempool.h
  3. +2
    -0
      source/modules/rtmempool/rtmempool-lv2.h
  4. +23
    -16
      source/modules/rtmempool/rtmempool.c
  5. +2
    -0
      source/utils/CarlaLv2Utils.hpp

+ 32
- 22
source/backend/plugin/Lv2Plugin.cpp View File

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

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

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

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

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

@@ -4161,6 +4165,9 @@ public:
LV2_RtMemPool_Pool* const rtMemPoolFt = new LV2_RtMemPool_Pool;
lv2_rtmempool_init(rtMemPoolFt);

LV2_RtMemPool_Pool_Deprecated* const rtMemPoolOldFt = new LV2_RtMemPool_Pool_Deprecated;
lv2_rtmempool_init_deprecated(rtMemPoolOldFt);

LV2_URI_Map_Feature* const uriMapFt = new LV2_URI_Map_Feature;
uriMapFt->callback_data = this;
uriMapFt->uri_to_id = carla_lv2_uri_to_id;
@@ -4216,6 +4223,9 @@ public:
fFeatures[kFeatureIdRtMemPool]->URI = LV2_RTSAFE_MEMORY_POOL__Pool;
fFeatures[kFeatureIdRtMemPool]->data = rtMemPoolFt;

fFeatures[kFeatureIdRtMemPoolOld]->URI = LV2_RTSAFE_MEMORY_POOL_DEPRECATED_URI;
fFeatures[kFeatureIdRtMemPoolOld]->data = rtMemPoolOldFt;

fFeatures[kFeatureIdStateMakePath]->URI = LV2_STATE__makePath;
fFeatures[kFeatureIdStateMakePath]->data = stateMakePathFt;



+ 14
- 0
source/includes/lv2/lv2_rtmempool.h View File

@@ -27,6 +27,9 @@
/** max size of memory pool name, in chars, including terminating zero char */
#define LV2_RTSAFE_MEMORY_POOL_NAME_MAX 128

/** This extension used to be defined by a different URI */
#define LV2_RTSAFE_MEMORY_POOL_DEPRECATED_URI "http://home.gna.org/lv2dynparam/rtmempool/v1"

#ifdef __cplusplus
extern "C" {
#else
@@ -98,6 +101,17 @@ typedef struct _LV2_RtMemPool_Pool {

} LV2_RtMemPool_Pool;

/**
* Deprecated feature for backwards compatibility.
*/
typedef struct _LV2_RtMemPool_Pool_Deprecated {
unsigned char (*create)(const char*,size_t,size_t,size_t,LV2_RtMemPool_Handle*);
void (*destroy)(LV2_RtMemPool_Handle);
void* (*allocate_atomic)(LV2_RtMemPool_Handle);
void* (*allocate_sleepy)(LV2_RtMemPool_Handle);
void (*deallocate)(LV2_RtMemPool_Handle,void*);
} LV2_RtMemPool_Pool_Deprecated;

#ifdef __cplusplus
} /* extern "C" */
#endif


+ 2
- 0
source/modules/rtmempool/rtmempool-lv2.h View File

@@ -28,4 +28,6 @@
*/
void lv2_rtmempool_init(LV2_RtMemPool_Pool* poolPtr);

void lv2_rtmempool_init_deprecated(LV2_RtMemPool_Pool_Deprecated* poolPtr);

#endif // __RTMEMPOOL_LV2_H__

+ 23
- 16
source/modules/rtmempool/rtmempool.c View File

@@ -55,19 +55,10 @@ typedef struct _RtMemPool

} RtMemPool;

// ------------------------------------------------------------------------------------------------
// additional function prototypes

void rtsafe_memory_pool_sleepy(RtMemPool* poolPtr);

bool rtsafe_memory_pool_create2(RtMemPool_Handle* handlePtr, const char* poolName,
size_t dataSize, size_t minPreallocated, size_t maxPreallocated,
int enforceThreadSafety);

// ------------------------------------------------------------------------------------------------
// adjust unused list size

void rtsafe_memory_pool_sleepy(RtMemPool* poolPtr)
static void rtsafe_memory_pool_sleepy(RtMemPool* poolPtr)
{
k_list_head* nodePtr;
unsigned int count;
@@ -144,12 +135,12 @@ void rtsafe_memory_pool_sleepy(RtMemPool* poolPtr)

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

bool rtsafe_memory_pool_create2(RtMemPool_Handle* handlePtr,
const char* poolName,
size_t dataSize,
size_t minPreallocated,
size_t maxPreallocated,
int enforceThreadSafety)
static bool rtsafe_memory_pool_create2(RtMemPool_Handle* handlePtr,
const char* poolName,
size_t dataSize,
size_t minPreallocated,
size_t maxPreallocated,
int enforceThreadSafety)
{
assert(minPreallocated <= maxPreallocated);
assert(poolName == NULL || strlen(poolName) < RTSAFE_MEMORY_POOL_NAME_MAX);
@@ -206,6 +197,13 @@ bool rtsafe_memory_pool_create2(RtMemPool_Handle* handlePtr,

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

static unsigned char rtsafe_memory_pool_create_old(const char* poolName, size_t dataSize, size_t minPreallocated, size_t maxPreallocated, RtMemPool_Handle* handlePtr)
{
return rtsafe_memory_pool_create2(handlePtr, poolName, dataSize, minPreallocated, maxPreallocated, 0);
}

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

bool rtsafe_memory_pool_create(RtMemPool_Handle* handlePtr,
const char* poolName,
size_t dataSize,
@@ -385,4 +383,13 @@ void lv2_rtmempool_init(LV2_RtMemPool_Pool* poolPtr)
poolPtr->allocate_sleepy = rtsafe_memory_pool_allocate_sleepy;
poolPtr->deallocate = rtsafe_memory_pool_deallocate;
}

void lv2_rtmempool_init_deprecated(LV2_RtMemPool_Pool_Deprecated* poolPtr)
{
poolPtr->create = rtsafe_memory_pool_create_old;
poolPtr->destroy = rtsafe_memory_pool_destroy;
poolPtr->allocate_atomic = rtsafe_memory_pool_allocate_atomic;
poolPtr->allocate_sleepy = rtsafe_memory_pool_allocate_sleepy;
poolPtr->deallocate = rtsafe_memory_pool_deallocate;
}
#endif

+ 2
- 0
source/utils/CarlaLv2Utils.hpp View File

@@ -1291,6 +1291,8 @@ bool is_lv2_feature_supported(const LV2_URI uri)
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)
return true;
if (std::strcmp(uri, LV2_STATE__makePath) == 0)
return true;
if (std::strcmp(uri, LV2_STATE__mapPath) == 0)


Loading…
Cancel
Save