| @@ -1699,36 +1699,36 @@ bool CarlaEngine::patchbayConnect(const int portA, const int portB) | |||
| case RACK_PATCHBAY_PORT_AUDIO_IN1: | |||
| CARLA_SAFE_ASSERT_BREAK(targetPort >= RACK_PATCHBAY_GROUP_AUDIO_IN*1000); | |||
| CARLA_SAFE_ASSERT_BREAK(targetPort <= RACK_PATCHBAY_GROUP_AUDIO_IN*1000+999); | |||
| rack->connectLock.lock(); | |||
| rack->connectedIns[0].append(targetPort - RACK_PATCHBAY_GROUP_AUDIO_IN*1000); | |||
| rack->connectLock.unlock(); | |||
| rack->connectLock.enter(); | |||
| rack->connectedIn1.append(targetPort - RACK_PATCHBAY_GROUP_AUDIO_IN*1000); | |||
| rack->connectLock.leave(); | |||
| makeConnection = true; | |||
| break; | |||
| case RACK_PATCHBAY_PORT_AUDIO_IN2: | |||
| CARLA_SAFE_ASSERT_BREAK(targetPort >= RACK_PATCHBAY_GROUP_AUDIO_IN*1000); | |||
| CARLA_SAFE_ASSERT_BREAK(targetPort <= RACK_PATCHBAY_GROUP_AUDIO_IN*1000+999); | |||
| rack->connectLock.lock(); | |||
| rack->connectedIns[1].append(targetPort - RACK_PATCHBAY_GROUP_AUDIO_IN*1000); | |||
| rack->connectLock.unlock(); | |||
| rack->connectLock.enter(); | |||
| rack->connectedIn2.append(targetPort - RACK_PATCHBAY_GROUP_AUDIO_IN*1000); | |||
| rack->connectLock.leave(); | |||
| makeConnection = true; | |||
| break; | |||
| case RACK_PATCHBAY_PORT_AUDIO_OUT1: | |||
| CARLA_SAFE_ASSERT_BREAK(targetPort >= RACK_PATCHBAY_GROUP_AUDIO_OUT*1000); | |||
| CARLA_SAFE_ASSERT_BREAK(targetPort <= RACK_PATCHBAY_GROUP_AUDIO_OUT*1000+999); | |||
| rack->connectLock.lock(); | |||
| rack->connectedOuts[0].append(targetPort - RACK_PATCHBAY_GROUP_AUDIO_OUT*1000); | |||
| rack->connectLock.unlock(); | |||
| rack->connectLock.enter(); | |||
| rack->connectedOut1.append(targetPort - RACK_PATCHBAY_GROUP_AUDIO_OUT*1000); | |||
| rack->connectLock.leave(); | |||
| makeConnection = true; | |||
| break; | |||
| case RACK_PATCHBAY_PORT_AUDIO_OUT2: | |||
| CARLA_SAFE_ASSERT_BREAK(targetPort >= RACK_PATCHBAY_GROUP_AUDIO_OUT*1000); | |||
| CARLA_SAFE_ASSERT_BREAK(targetPort <= RACK_PATCHBAY_GROUP_AUDIO_OUT*1000+999); | |||
| rack->connectLock.lock(); | |||
| rack->connectedOuts[1].append(targetPort - RACK_PATCHBAY_GROUP_AUDIO_OUT*1000); | |||
| rack->connectLock.unlock(); | |||
| rack->connectLock.enter(); | |||
| rack->connectedOut2.append(targetPort - RACK_PATCHBAY_GROUP_AUDIO_OUT*1000); | |||
| rack->connectLock.leave(); | |||
| makeConnection = true; | |||
| break; | |||
| @@ -1810,14 +1810,14 @@ bool CarlaEngine::patchbayDisconnect(const uint connectionId) | |||
| const int portId(otherPort-RACK_PATCHBAY_GROUP_AUDIO_OUT*1000); | |||
| rack->connectLock.lock(); | |||
| rack->connectLock.enter(); | |||
| if (carlaPort == RACK_PATCHBAY_PORT_AUDIO_OUT1) | |||
| rack->connectedOuts[0].removeAll(portId); | |||
| rack->connectedOut1.removeAll(portId); | |||
| else | |||
| rack->connectedOuts[1].removeAll(portId); | |||
| rack->connectedOut2.removeAll(portId); | |||
| rack->connectLock.unlock(); | |||
| rack->connectLock.leave(); | |||
| } | |||
| else if (otherPort >= RACK_PATCHBAY_GROUP_AUDIO_IN*1000) | |||
| { | |||
| @@ -1825,14 +1825,14 @@ bool CarlaEngine::patchbayDisconnect(const uint connectionId) | |||
| const int portId(otherPort-RACK_PATCHBAY_GROUP_AUDIO_IN*1000); | |||
| rack->connectLock.lock(); | |||
| rack->connectLock.enter(); | |||
| if (carlaPort == RACK_PATCHBAY_PORT_AUDIO_IN1) | |||
| rack->connectedIns[0].removeAll(portId); | |||
| rack->connectedIn1.removeAll(portId); | |||
| else | |||
| rack->connectedIns[1].removeAll(portId); | |||
| rack->connectedIn2.removeAll(portId); | |||
| rack->connectLock.unlock(); | |||
| rack->connectLock.leave(); | |||
| } | |||
| else | |||
| { | |||
| @@ -323,10 +323,10 @@ void EngineRackBuffers::clear() | |||
| out[1] = nullptr; | |||
| } | |||
| connectedIns[0].clear(); | |||
| connectedIns[1].clear(); | |||
| connectedOuts[0].clear(); | |||
| connectedOuts[1].clear(); | |||
| connectedIn1.clear(); | |||
| connectedIn2.clear(); | |||
| connectedOut1.clear(); | |||
| connectedOut2.clear(); | |||
| usedConnections.clear(); | |||
| } | |||
| @@ -864,10 +864,10 @@ void CarlaEngineProtectedData::processRackFull(float** const inBuf, const uint32 | |||
| { | |||
| EngineRackBuffers* const rack(bufAudio.rack); | |||
| const CarlaMutex::ScopedLocker sl(rack->connectLock); | |||
| const CarlaCriticalSection::Scope _cs2(rack->connectLock); | |||
| // connect input buffers | |||
| if (rack->connectedIns[0].count() == 0) | |||
| if (rack->connectedIn1.count() == 0) | |||
| { | |||
| FLOAT_CLEAR(rack->in[0], nframes); | |||
| } | |||
| @@ -875,7 +875,7 @@ void CarlaEngineProtectedData::processRackFull(float** const inBuf, const uint32 | |||
| { | |||
| bool first = true; | |||
| for (LinkedList<int>::Itenerator it = rack->connectedIns[0].begin(); it.valid(); it.next()) | |||
| for (LinkedList<int>::Itenerator it = rack->connectedIn1.begin(); it.valid(); it.next()) | |||
| { | |||
| const int& port(it.getValue()); | |||
| CARLA_SAFE_ASSERT_CONTINUE(port >= 0 && port < static_cast<int>(inCount)); | |||
| @@ -895,7 +895,7 @@ void CarlaEngineProtectedData::processRackFull(float** const inBuf, const uint32 | |||
| FLOAT_CLEAR(rack->in[0], nframes); | |||
| } | |||
| if (rack->connectedIns[1].count() == 0) | |||
| if (rack->connectedIn2.count() == 0) | |||
| { | |||
| FLOAT_CLEAR(rack->in[1], nframes); | |||
| } | |||
| @@ -903,7 +903,7 @@ void CarlaEngineProtectedData::processRackFull(float** const inBuf, const uint32 | |||
| { | |||
| bool first = true; | |||
| for (LinkedList<int>::Itenerator it = rack->connectedIns[1].begin(); it.valid(); it.next()) | |||
| for (LinkedList<int>::Itenerator it = rack->connectedIn2.begin(); it.valid(); it.next()) | |||
| { | |||
| const int& port(it.getValue()); | |||
| CARLA_SAFE_ASSERT_CONTINUE(port >= 0 && port < static_cast<int>(inCount)); | |||
| @@ -930,9 +930,9 @@ void CarlaEngineProtectedData::processRackFull(float** const inBuf, const uint32 | |||
| processRack(rack->in, rack->out, nframes, isOffline); | |||
| // connect output buffers | |||
| if (rack->connectedOuts[0].count() != 0) | |||
| if (rack->connectedOut1.count() != 0) | |||
| { | |||
| for (LinkedList<int>::Itenerator it = rack->connectedOuts[0].begin(); it.valid(); it.next()) | |||
| for (LinkedList<int>::Itenerator it = rack->connectedOut1.begin(); it.valid(); it.next()) | |||
| { | |||
| const int& port(it.getValue()); | |||
| CARLA_SAFE_ASSERT_CONTINUE(port >= 0 && port < static_cast<int>(outCount)); | |||
| @@ -941,9 +941,9 @@ void CarlaEngineProtectedData::processRackFull(float** const inBuf, const uint32 | |||
| } | |||
| } | |||
| if (rack->connectedOuts[1].count() != 0) | |||
| if (rack->connectedOut2.count() != 0) | |||
| { | |||
| for (LinkedList<int>::Itenerator it = rack->connectedOuts[1].begin(); it.valid(); it.next()) | |||
| for (LinkedList<int>::Itenerator it = rack->connectedOut2.begin(); it.valid(); it.next()) | |||
| { | |||
| const int& port(it.getValue()); | |||
| CARLA_SAFE_ASSERT_CONTINUE(port >= 0 && port < static_cast<int>(outCount)); | |||
| @@ -94,9 +94,11 @@ struct EngineRackBuffers { | |||
| float* out[2]; | |||
| // connections stuff | |||
| LinkedList<int> connectedIns[2]; | |||
| LinkedList<int> connectedOuts[2]; | |||
| CarlaMutex connectLock; | |||
| LinkedList<int> connectedIn1; | |||
| LinkedList<int> connectedIn2; | |||
| LinkedList<int> connectedOut1; | |||
| LinkedList<int> connectedOut2; | |||
| CarlaCriticalSection connectLock; | |||
| uint lastConnectionId; | |||
| LinkedList<ConnectionToId> usedConnections; | |||
| @@ -500,9 +500,9 @@ public: | |||
| #endif | |||
| // Connections | |||
| rack->connectLock.lock(); | |||
| rack->connectLock.enter(); | |||
| for (LinkedList<int>::Itenerator it = rack->connectedIns[0].begin(); it.valid(); it.next()) | |||
| for (LinkedList<int>::Itenerator it = rack->connectedIn1.begin(); it.valid(); it.next()) | |||
| { | |||
| const int& port(it.getValue()); | |||
| CARLA_SAFE_ASSERT_CONTINUE(port >= 0 && port < static_cast<int>(pData->bufAudio.inCount)); | |||
| @@ -518,7 +518,7 @@ public: | |||
| rack->lastConnectionId++; | |||
| } | |||
| for (LinkedList<int>::Itenerator it = rack->connectedIns[1].begin(); it.valid(); it.next()) | |||
| for (LinkedList<int>::Itenerator it = rack->connectedIn2.begin(); it.valid(); it.next()) | |||
| { | |||
| const int& port(it.getValue()); | |||
| CARLA_SAFE_ASSERT_CONTINUE(port >= 0 && port < static_cast<int>(pData->bufAudio.inCount)); | |||
| @@ -534,7 +534,7 @@ public: | |||
| rack->lastConnectionId++; | |||
| } | |||
| for (LinkedList<int>::Itenerator it = rack->connectedOuts[0].begin(); it.valid(); it.next()) | |||
| for (LinkedList<int>::Itenerator it = rack->connectedOut1.begin(); it.valid(); it.next()) | |||
| { | |||
| const int& port(it.getValue()); | |||
| CARLA_SAFE_ASSERT_CONTINUE(port >= 0 && port < static_cast<int>(pData->bufAudio.outCount)); | |||
| @@ -550,7 +550,7 @@ public: | |||
| rack->lastConnectionId++; | |||
| } | |||
| for (LinkedList<int>::Itenerator it = rack->connectedOuts[1].begin(); it.valid(); it.next()) | |||
| for (LinkedList<int>::Itenerator it = rack->connectedOut2.begin(); it.valid(); it.next()) | |||
| { | |||
| const int& port(it.getValue()); | |||
| CARLA_SAFE_ASSERT_CONTINUE(port >= 0 && port < static_cast<int>(pData->bufAudio.outCount)); | |||
| @@ -566,7 +566,7 @@ public: | |||
| rack->lastConnectionId++; | |||
| } | |||
| pData->bufAudio.rack->connectLock.unlock(); | |||
| pData->bufAudio.rack->connectLock.leave(); | |||
| for (LinkedList<MidiPort>::Itenerator it=fMidiIns.begin(); it.valid(); it.next()) | |||
| { | |||
| @@ -24,7 +24,8 @@ | |||
| CARLA_BACKEND_START_NAMESPACE | |||
| static const char* PluginThreadMode2str(const CarlaPluginThread::Mode mode) | |||
| static inline | |||
| const char* PluginThreadMode2str(const CarlaPluginThread::Mode mode) | |||
| { | |||
| switch (mode) | |||
| { | |||
| @@ -517,6 +517,7 @@ public: | |||
| clearBuffers(); | |||
| uint32_t aIns, aOuts, mIns, mOuts, params; | |||
| aIns = aOuts = 0; | |||
| bool needsCtrlIn, needsCtrlOut; | |||
| needsCtrlIn = needsCtrlOut = false; | |||
| @@ -40,6 +40,10 @@ CarlaBridgeClient::CarlaBridgeClient(const char* const uiTitle) | |||
| CARLA_ASSERT(uiTitle != nullptr && uiTitle[0] != '\0'); | |||
| #endif | |||
| carla_debug("CarlaBridgeClient::CarlaBridgeClient(\"%s\")", uiTitle); | |||
| #ifndef BUILD_BRIDGE_UI | |||
| return; (void)uiTitle; // unused | |||
| #endif | |||
| } | |||
| CarlaBridgeClient::~CarlaBridgeClient() | |||