Browse Source

Close jack client after right deactivation, needed for jack1

jack1 does not wait for deactivate to stop the audio thread,
this leads to race conditions while we delete our audio buffers.

Signed-off-by: falkTX <falktx@falktx.com>
tags/v2.1-alpha2
falkTX 5 years ago
parent
commit
74fd9b2b0c
1 changed files with 3 additions and 16 deletions
  1. +3
    -16
      source/backend/engine/CarlaEngineJack.cpp

+ 3
- 16
source/backend/engine/CarlaEngineJack.cpp View File

@@ -1071,8 +1071,9 @@ public:


CARLA_SAFE_ASSERT_RETURN_ERR(fClient != nullptr, "JACK Client is null"); CARLA_SAFE_ASSERT_RETURN_ERR(fClient != nullptr, "JACK Client is null");


// deactivate first
const bool deactivated(jackbridge_deactivate(fClient));
// deactivate and close client
jackbridge_deactivate(fClient);
jackbridge_client_close(fClient);


// clear engine data // clear engine data
CarlaEngine::close(); CarlaEngine::close();
@@ -1087,24 +1088,10 @@ public:
if (pData->options.processMode == ENGINE_PROCESS_MODE_CONTINUOUS_RACK || if (pData->options.processMode == ENGINE_PROCESS_MODE_CONTINUOUS_RACK ||
pData->options.processMode == ENGINE_PROCESS_MODE_PATCHBAY) pData->options.processMode == ENGINE_PROCESS_MODE_PATCHBAY)
{ {
if (deactivated)
{
jackbridge_port_unregister(fClient, fRackPorts[kRackPortAudioIn1]);
jackbridge_port_unregister(fClient, fRackPorts[kRackPortAudioIn2]);
jackbridge_port_unregister(fClient, fRackPorts[kRackPortAudioOut1]);
jackbridge_port_unregister(fClient, fRackPorts[kRackPortAudioOut2]);
jackbridge_port_unregister(fClient, fRackPorts[kRackPortEventIn]);
jackbridge_port_unregister(fClient, fRackPorts[kRackPortEventOut]);
}
carla_zeroPointers(fRackPorts, kRackPortCount); carla_zeroPointers(fRackPorts, kRackPortCount);

pData->graph.destroy(); pData->graph.destroy();
} }


// close client
if (deactivated)
jackbridge_client_close(fClient);

fClient = nullptr; fClient = nullptr;
return true; return true;
#endif #endif


Loading…
Cancel
Save