Browse Source

More fixing for client rename

tags/1.9.4
falkTX 10 years ago
parent
commit
f11b6b5cda
1 changed files with 58 additions and 10 deletions
  1. +58
    -10
      source/backend/engine/CarlaEngineJack.cpp

+ 58
- 10
source/backend/engine/CarlaEngineJack.cpp View File

@@ -44,16 +44,31 @@ class CarlaEngineJackClient;

static const EngineEvent kFallbackJackEngineEvent = { kEngineEventTypeNull, 0, 0, {{ kEngineControlEventTypeNull, 0, 0.0f }} };

// -----------------------------------------------------------------------
// Carla Engine Port removal helper

class CarlaEngineJackAudioPort;
class CarlaEngineJackCVPort;
class CarlaEngineJackEventPort;

struct JackPortDeletionCallback {
virtual ~JackPortDeletionCallback() {}
virtual void jackAudioPortDeleted(CarlaEngineJackAudioPort* const) = 0;
virtual void jackCVPortDeleted(CarlaEngineJackCVPort* const) = 0;
virtual void jackEventPortDeleted(CarlaEngineJackEventPort* const) = 0;
};

// -----------------------------------------------------------------------
// Carla Engine JACK-Audio port

class CarlaEngineJackAudioPort : public CarlaEngineAudioPort
{
public:
CarlaEngineJackAudioPort(const CarlaEngineClient& client, const bool isInputPort, jack_client_t* const jackClient, jack_port_t* const jackPort) noexcept
CarlaEngineJackAudioPort(const CarlaEngineClient& client, const bool isInputPort, jack_client_t* const jackClient, jack_port_t* const jackPort, JackPortDeletionCallback* const delCallback) noexcept
: CarlaEngineAudioPort(client, isInputPort),
fJackClient(jackClient),
fJackPort(jackPort)
fJackPort(jackPort),
fDeletionCallback(delCallback)
{
carla_debug("CarlaEngineJackAudioPort::CarlaEngineJackAudioPort(%s, %p, %p)", bool2str(isInputPort), jackClient, jackPort);

@@ -90,6 +105,9 @@ public:
fJackClient = nullptr;
fJackPort = nullptr;
}

if (fDeletionCallback != nullptr)
fDeletionCallback->jackAudioPortDeleted(this);
}

void initBuffer() noexcept override
@@ -121,6 +139,8 @@ private:
jack_client_t* fJackClient;
jack_port_t* fJackPort;

JackPortDeletionCallback* const fDeletionCallback;

CARLA_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(CarlaEngineJackAudioPort)
};

@@ -130,10 +150,11 @@ private:
class CarlaEngineJackCVPort : public CarlaEngineCVPort
{
public:
CarlaEngineJackCVPort(const CarlaEngineClient& client, const bool isInputPort, jack_client_t* const jackClient, jack_port_t* const jackPort) noexcept
CarlaEngineJackCVPort(const CarlaEngineClient& client, const bool isInputPort, jack_client_t* const jackClient, jack_port_t* const jackPort, JackPortDeletionCallback* const delCallback) noexcept
: CarlaEngineCVPort(client, isInputPort),
fJackClient(jackClient),
fJackPort(jackPort)
fJackPort(jackPort),
fDeletionCallback(delCallback)
{
carla_debug("CarlaEngineJackCVPort::CarlaEngineJackCVPort(%s, %p, %p)", bool2str(isInputPort), jackClient, jackPort);

@@ -170,6 +191,9 @@ public:
fJackClient = nullptr;
fJackPort = nullptr;
}

if (fDeletionCallback != nullptr)
fDeletionCallback->jackCVPortDeleted(this);
}

void initBuffer() noexcept override
@@ -201,6 +225,8 @@ private:
jack_client_t* fJackClient;
jack_port_t* fJackPort;

JackPortDeletionCallback* const fDeletionCallback;

CARLA_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(CarlaEngineJackCVPort)
};

@@ -210,11 +236,12 @@ private:
class CarlaEngineJackEventPort : public CarlaEngineEventPort
{
public:
CarlaEngineJackEventPort(const CarlaEngineClient& client, const bool isInputPort, jack_client_t* const jackClient, jack_port_t* const jackPort) noexcept
CarlaEngineJackEventPort(const CarlaEngineClient& client, const bool isInputPort, jack_client_t* const jackClient, jack_port_t* const jackPort, JackPortDeletionCallback* const delCallback) noexcept
: CarlaEngineEventPort(client, isInputPort),
fJackClient(jackClient),
fJackPort(jackPort),
fJackBuffer(nullptr)
fJackBuffer(nullptr),
fDeletionCallback(delCallback)
{
carla_debug("CarlaEngineJackEventPort::CarlaEngineJackEventPort(%s, %p, %p)", bool2str(isInputPort), jackClient, jackPort);

@@ -243,6 +270,9 @@ public:
fJackClient = nullptr;
fJackPort = nullptr;
}

if (fDeletionCallback != nullptr)
fDeletionCallback->jackEventPortDeleted(this);
}

void initBuffer() noexcept override
@@ -385,13 +415,16 @@ private:

mutable EngineEvent fRetEvent;

JackPortDeletionCallback* const fDeletionCallback;

CARLA_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(CarlaEngineJackEventPort)
};

// -----------------------------------------------------------------------
// Jack Engine client

class CarlaEngineJackClient : public CarlaEngineClient
class CarlaEngineJackClient : public CarlaEngineClient,
JackPortDeletionCallback
{
public:
CarlaEngineJackClient(const CarlaEngine& engine, jack_client_t* const jackClient)
@@ -510,17 +543,17 @@ public:
case kEnginePortTypeNull:
break;
case kEnginePortTypeAudio: {
CarlaEngineJackAudioPort* const enginePort(new CarlaEngineJackAudioPort(fEngine, isInput, fJackClient, jackPort));
CarlaEngineJackAudioPort* const enginePort(new CarlaEngineJackAudioPort(*this, isInput, fJackClient, jackPort, this));
fAudioPorts.append(enginePort);
return enginePort;
}
case kEnginePortTypeCV: {
CarlaEngineJackCVPort* const enginePort(new CarlaEngineJackCVPort(fEngine, isInput, fJackClient, jackPort));
CarlaEngineJackCVPort* const enginePort(new CarlaEngineJackCVPort(*this, isInput, fJackClient, jackPort, this));
fCVPorts.append(enginePort);
return enginePort;
}
case kEnginePortTypeEvent: {
CarlaEngineJackEventPort* const enginePort(new CarlaEngineJackEventPort(fEngine, isInput, fJackClient, jackPort));
CarlaEngineJackEventPort* const enginePort(new CarlaEngineJackEventPort(*this, isInput, fJackClient, jackPort, this));
fEventPorts.append(enginePort);
return enginePort;
}
@@ -564,6 +597,21 @@ public:
return nullptr;
}

void jackAudioPortDeleted(CarlaEngineJackAudioPort* const port) override
{
fAudioPorts.removeAll(port);
}

void jackCVPortDeleted(CarlaEngineJackCVPort* const port) override
{
fCVPorts.removeAll(port);
}

void jackEventPortDeleted(CarlaEngineJackEventPort* const port) override
{
fEventPorts.removeAll(port);
}

private:
jack_client_t* fJackClient;
const bool fUseClient;


Loading…
Cancel
Save