Browse Source

Fix crash when plugin adds latency after starting at 0

Signed-off-by: falkTX <falktx@falktx.com>
tags/v2.1-rc1
falkTX 6 years ago
parent
commit
a0be30f35e
Signed by: falkTX <falktx@falktx.com> GPG Key ID: CDBAA37ABC74FBA0
4 changed files with 17 additions and 12 deletions
  1. +5
    -3
      source/backend/plugin/CarlaPluginBridge.cpp
  2. +4
    -3
      source/backend/plugin/CarlaPluginDSSI.cpp
  3. +4
    -3
      source/backend/plugin/CarlaPluginLADSPA.cpp
  4. +4
    -3
      source/backend/plugin/CarlaPluginLV2.cpp

+ 5
- 3
source/backend/plugin/CarlaPluginBridge.cpp View File

@@ -1561,7 +1561,7 @@ public:
for (uint32_t k=0; k < frames; ++k)
{
# ifndef BUILD_BRIDGE
if (k < pData->latency.frames)
if (k < pData->latency.frames && pData->latency.buffers != nullptr)
bufValue = pData->latency.buffers[c][k];
else if (pData->latency.frames < frames)
bufValue = audioIn[c][k-pData->latency.frames];
@@ -1618,8 +1618,10 @@ public:
// --------------------------------------------------------------------------------------------------------
// Save latency values for next callback

if (const uint32_t latframes = pData->latency.frames)
if (pData->latency.frames != 0 && pData->latency.buffers != nullptr)
{
const uint32_t latframes = pData->latency.frames;

if (latframes <= frames)
{
for (uint32_t i=0; i < pData->audioIn.count; ++i)
@@ -1627,7 +1629,7 @@ public:
}
else
{
const uint32_t diff = pData->latency.frames-frames;
const uint32_t diff = latframes - frames;

for (uint32_t i=0, k; i<pData->audioIn.count; ++i)
{


+ 4
- 3
source/backend/plugin/CarlaPluginDSSI.cpp View File

@@ -1869,7 +1869,7 @@ public:

for (uint32_t k=0; k < frames; ++k)
{
if (k < pData->latency.frames)
if (k < pData->latency.frames && pData->latency.buffers != nullptr)
bufValue = pData->latency.buffers[c][k];
else if (pData->latency.frames < frames)
bufValue = fAudioInBuffers[c][k-pData->latency.frames];
@@ -1923,9 +1923,10 @@ public:
// --------------------------------------------------------------------------------------------------------
// Save latency values for next callback

if (const uint32_t latframes = pData->latency.frames)
if (pData->latency.frames != 0 && pData->latency.buffers != nullptr)
{
CARLA_SAFE_ASSERT(timeOffset == 0);
const uint32_t latframes = pData->latency.frames;

if (latframes <= frames)
{
@@ -1934,7 +1935,7 @@ public:
}
else
{
const uint32_t diff = pData->latency.frames-frames;
const uint32_t diff = latframes - frames;

for (uint32_t i=0, k; i<pData->audioIn.count; ++i)
{


+ 4
- 3
source/backend/plugin/CarlaPluginLADSPA.cpp View File

@@ -1216,7 +1216,7 @@ public:
for (uint32_t k=0; k < frames; ++k)
{
# ifndef BUILD_BRIDGE
if (k < pData->latency.frames)
if (k < pData->latency.frames && pData->latency.buffers != nullptr)
bufValue = pData->latency.buffers[c][k];
else if (pData->latency.frames < frames)
bufValue = fAudioInBuffers[c][k-pData->latency.frames];
@@ -1272,9 +1272,10 @@ public:
// --------------------------------------------------------------------------------------------------------
// Save latency values for next callback

if (const uint32_t latframes = pData->latency.frames)
if (pData->latency.frames != 0 && pData->latency.buffers != nullptr)
{
CARLA_SAFE_ASSERT(timeOffset == 0);
const uint32_t latframes = pData->latency.frames;

if (latframes <= frames)
{
@@ -1283,7 +1284,7 @@ public:
}
else
{
const uint32_t diff = pData->latency.frames-frames;
const uint32_t diff = latframes - frames;

for (uint32_t i=0, k; i<pData->audioIn.count; ++i)
{


+ 4
- 3
source/backend/plugin/CarlaPluginLV2.cpp View File

@@ -4066,7 +4066,7 @@ public:
for (uint32_t k=0; k < frames; ++k)
{
# ifndef BUILD_BRIDGE
if (k < pData->latency.frames)
if (k < pData->latency.frames && pData->latency.buffers != nullptr)
bufValue = pData->latency.buffers[c][k];
else if (pData->latency.frames < frames)
bufValue = fAudioInBuffers[c][k-pData->latency.frames];
@@ -4121,9 +4121,10 @@ public:
// --------------------------------------------------------------------------------------------------------
// Save latency values for next callback

if (const uint32_t latframes = pData->latency.frames)
if (pData->latency.frames != 0 && pData->latency.buffers != nullptr)
{
CARLA_SAFE_ASSERT(timeOffset == 0);
const uint32_t latframes = pData->latency.frames;

if (latframes <= frames)
{
@@ -4132,7 +4133,7 @@ public:
}
else
{
const uint32_t diff = pData->latency.frames-frames;
const uint32_t diff = latframes - frames;

for (uint32_t i=0, k; i<pData->audioIn.count; ++i)
{


Loading…
Cancel
Save