|
|
@@ -85,6 +85,7 @@ public: |
|
|
|
fIsOffline(false), |
|
|
|
fBufferSize(0), |
|
|
|
fSampleRate(sampleRate), |
|
|
|
fUsingNominal(false), |
|
|
|
fUridMap(nullptr), |
|
|
|
fURIs(), |
|
|
|
fUI(), |
|
|
@@ -150,12 +151,30 @@ public: |
|
|
|
CARLA_SAFE_ASSERT_CONTINUE(value > 0); |
|
|
|
|
|
|
|
fBufferSize = static_cast<uint32_t>(value); |
|
|
|
fUsingNominal = true; |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
carla_stderr("Host provides nominalBlockLength but has wrong value type"); |
|
|
|
|
|
|
|
} |
|
|
|
break; |
|
|
|
} |
|
|
|
|
|
|
|
if (options[i].key == uridMap->map(uridMap->handle, LV2_BUF_SIZE__maxBlockLength)) |
|
|
|
{ |
|
|
|
if (options[i].type == uridMap->map(uridMap->handle, LV2_ATOM__Int)) |
|
|
|
{ |
|
|
|
const int value(*(const int*)options[i].value); |
|
|
|
CARLA_SAFE_ASSERT_CONTINUE(value > 0); |
|
|
|
|
|
|
|
fBufferSize = static_cast<uint32_t>(value); |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
carla_stderr("Host provides maxBlockLength but has wrong value type"); |
|
|
|
} |
|
|
|
// no break, continue in case host supports nominalBlockLength |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
fUridMap = uridMap; |
|
|
@@ -596,7 +615,7 @@ public: |
|
|
|
{ |
|
|
|
if (options[i].key == fUridMap->map(fUridMap->handle, LV2_BUF_SIZE__nominalBlockLength)) |
|
|
|
{ |
|
|
|
if (options[i].type == fUridMap->map(fUridMap->handle, LV2_ATOM__Int)) |
|
|
|
if (options[i].type == fURIs.atomInt) |
|
|
|
{ |
|
|
|
const int value(*(const int*)options[i].value); |
|
|
|
CARLA_SAFE_ASSERT_CONTINUE(value > 0); |
|
|
@@ -609,9 +628,24 @@ public: |
|
|
|
else |
|
|
|
carla_stderr("Host changed nominalBlockLength but with wrong value type"); |
|
|
|
} |
|
|
|
else if (options[i].key == fUridMap->map(fUridMap->handle, LV2_BUF_SIZE__maxBlockLength) && ! fUsingNominal) |
|
|
|
{ |
|
|
|
if (options[i].type == fURIs.atomInt) |
|
|
|
{ |
|
|
|
const int value(*(const int*)options[i].value); |
|
|
|
CARLA_SAFE_ASSERT_CONTINUE(value > 0); |
|
|
|
|
|
|
|
fBufferSize = static_cast<uint32_t>(value); |
|
|
|
|
|
|
|
if (fDescriptor->dispatcher != nullptr) |
|
|
|
fDescriptor->dispatcher(fHandle, NATIVE_PLUGIN_OPCODE_BUFFER_SIZE_CHANGED, 0, value, nullptr, 0.0f); |
|
|
|
} |
|
|
|
else |
|
|
|
carla_stderr("Host changed maxBlockLength but with wrong value type"); |
|
|
|
} |
|
|
|
else if (options[i].key == fUridMap->map(fUridMap->handle, LV2_CORE__sampleRate)) |
|
|
|
{ |
|
|
|
if (options[i].type == fUridMap->map(fUridMap->handle, LV2_ATOM__Double)) |
|
|
|
if (options[i].type == fURIs.atomDouble) |
|
|
|
{ |
|
|
|
const double value(*(const double*)options[i].value); |
|
|
|
CARLA_SAFE_ASSERT_CONTINUE(value > 0.0); |
|
|
@@ -1027,6 +1061,7 @@ private: |
|
|
|
bool fIsOffline; |
|
|
|
uint32_t fBufferSize; |
|
|
|
double fSampleRate; |
|
|
|
bool fUsingNominal; |
|
|
|
|
|
|
|
const LV2_URID_Map* fUridMap; |
|
|
|
|
|
|
|