git-svn-id: http://subversion.jackaudio.org/jack/jack2/trunk/jackmp@4601 0c269be4-1314-0410-8aa9-9f06e86f4224tags/1.9.8
@@ -35,10 +35,7 @@ namespace Jack | |||
{ | |||
JackAudioDriver::JackAudioDriver(const char* name, const char* alias, JackLockedEngine* engine, JackSynchro* table) | |||
: JackDriver(name, alias, engine, table), | |||
fCaptureChannels(0), | |||
fPlaybackChannels(0), | |||
fWithMonitorPorts(false) | |||
: JackDriver(name, alias, engine, table) | |||
{} | |||
JackAudioDriver::~JackAudioDriver() | |||
@@ -445,42 +442,4 @@ void JackAudioDriver::HandleLatencyCallback(int status) | |||
} | |||
} | |||
void JackAudioDriver::SaveConnections() | |||
{ | |||
const char** connections; | |||
fConnections.clear(); | |||
for (int i = 0; i < fCaptureChannels; ++i) { | |||
if (fCapturePortList[i] && (connections = fGraphManager->GetConnections(fCapturePortList[i])) != 0) { | |||
for (int j = 0; connections[j]; j++) { | |||
fConnections.push_back(make_pair(fGraphManager->GetPort(fCapturePortList[i])->GetName(), connections[j])); | |||
jack_info("Save connection: %s %s", fGraphManager->GetPort(fCapturePortList[i])->GetName(), connections[j]); | |||
} | |||
free(connections); | |||
} | |||
} | |||
for (int i = 0; i < fPlaybackChannels; ++i) { | |||
if (fPlaybackPortList[i] && (connections = fGraphManager->GetConnections(fPlaybackPortList[i])) != 0) { | |||
for (int j = 0; connections[j]; j++) { | |||
fConnections.push_back(make_pair(connections[j], fGraphManager->GetPort(fPlaybackPortList[i])->GetName())); | |||
jack_info("Save connection: %s %s", connections[j], fGraphManager->GetPort(fPlaybackPortList[i])->GetName()); | |||
} | |||
free(connections); | |||
} | |||
} | |||
} | |||
void JackAudioDriver::RestoreConnections() | |||
{ | |||
list<pair<string, string> >::const_iterator it; | |||
for (it = fConnections.begin(); it != fConnections.end(); it++) { | |||
pair<string, string> connection = *it; | |||
jack_info("Restore connection: %s %s", connection.first.c_str(), connection.second.c_str()); | |||
fEngine->PortConnect(fClientControl.fRefNum, connection.first.c_str(), connection.second.c_str()); | |||
} | |||
} | |||
} // end of namespace |
@@ -35,19 +35,6 @@ class SERVER_EXPORT JackAudioDriver : public JackDriver | |||
protected: | |||
int fCaptureChannels; | |||
int fPlaybackChannels; | |||
// Static tables since the actual number of ports may be changed by the real driver | |||
// thus dynamic allocation is more difficult to handle | |||
jack_port_id_t fCapturePortList[DRIVER_PORT_NUM]; | |||
jack_port_id_t fPlaybackPortList[DRIVER_PORT_NUM]; | |||
jack_port_id_t fMonitorPortList[DRIVER_PORT_NUM]; | |||
bool fWithMonitorPorts; | |||
std::list<std::pair<std::string, std::string> > fConnections; // Connections list | |||
jack_default_audio_sample_t* GetInputBuffer(int port_index); | |||
jack_default_audio_sample_t* GetOutputBuffer(int port_index); | |||
jack_default_audio_sample_t* GetMonitorBuffer(int port_index); | |||
@@ -105,9 +92,6 @@ class SERVER_EXPORT JackAudioDriver : public JackDriver | |||
virtual int SetBufferSize(jack_nframes_t buffer_size); | |||
virtual int SetSampleRate(jack_nframes_t sample_rate); | |||
virtual void SaveConnections(); | |||
virtual void RestoreConnections(); | |||
virtual int ClientNotify(int refnum, const char* name, int notify, int sync, const char* message, int value1, int value2); | |||
}; | |||
@@ -37,7 +37,10 @@ namespace Jack | |||
{ | |||
JackDriver::JackDriver(const char* name, const char* alias, JackLockedEngine* engine, JackSynchro* table) | |||
:fClientControl(name) | |||
:fClientControl(name), | |||
fCaptureChannels(0), | |||
fPlaybackChannels(0), | |||
fWithMonitorPorts(false) | |||
{ | |||
assert(strlen(name) < JACK_CLIENT_NAME_SIZE); | |||
fSynchroTable = table; | |||
@@ -59,6 +62,9 @@ JackDriver::JackDriver() | |||
fDelayedUsecs = 0.f; | |||
fIsMaster = true; | |||
fIsRunning = false; | |||
fCaptureChannels = 0; | |||
fPlaybackChannels = 0; | |||
fWithMonitorPorts = false; | |||
} | |||
JackDriver::~JackDriver() | |||
@@ -446,4 +452,42 @@ bool JackDriver::Initialize() | |||
return true; | |||
} | |||
void JackDriver::SaveConnections() | |||
{ | |||
const char** connections; | |||
fConnections.clear(); | |||
for (int i = 0; i < fCaptureChannels; ++i) { | |||
if (fCapturePortList[i] && (connections = fGraphManager->GetConnections(fCapturePortList[i])) != 0) { | |||
for (int j = 0; connections[j]; j++) { | |||
fConnections.push_back(make_pair(fGraphManager->GetPort(fCapturePortList[i])->GetName(), connections[j])); | |||
jack_info("Save connection: %s %s", fGraphManager->GetPort(fCapturePortList[i])->GetName(), connections[j]); | |||
} | |||
free(connections); | |||
} | |||
} | |||
for (int i = 0; i < fPlaybackChannels; ++i) { | |||
if (fPlaybackPortList[i] && (connections = fGraphManager->GetConnections(fPlaybackPortList[i])) != 0) { | |||
for (int j = 0; connections[j]; j++) { | |||
fConnections.push_back(make_pair(connections[j], fGraphManager->GetPort(fPlaybackPortList[i])->GetName())); | |||
jack_info("Save connection: %s %s", connections[j], fGraphManager->GetPort(fPlaybackPortList[i])->GetName()); | |||
} | |||
free(connections); | |||
} | |||
} | |||
} | |||
void JackDriver::RestoreConnections() | |||
{ | |||
list<pair<string, string> >::const_iterator it; | |||
for (it = fConnections.begin(); it != fConnections.end(); it++) { | |||
pair<string, string> connection = *it; | |||
jack_info("Restore connection: %s %s", connection.first.c_str(), connection.second.c_str()); | |||
fEngine->PortConnect(fClientControl.fRefNum, connection.first.c_str(), connection.second.c_str()); | |||
} | |||
} | |||
} // end of namespace |
@@ -129,12 +129,16 @@ class SERVER_EXPORT JackDriver : public JackDriverClientInterface | |||
char fCaptureDriverName[JACK_CLIENT_NAME_SIZE + 1]; | |||
char fPlaybackDriverName[JACK_CLIENT_NAME_SIZE + 1]; | |||
char fAliasName[JACK_CLIENT_NAME_SIZE + 1]; | |||
jack_nframes_t fCaptureLatency; | |||
jack_nframes_t fPlaybackLatency; | |||
jack_time_t fBeginDateUst; | |||
jack_time_t fEndDateUst; | |||
float fDelayedUsecs; | |||
JackLockedEngine* fEngine; | |||
JackGraphManager* fGraphManager; | |||
JackSynchro* fSynchroTable; | |||
@@ -144,6 +148,19 @@ class SERVER_EXPORT JackDriver : public JackDriverClientInterface | |||
bool fIsMaster; | |||
bool fIsRunning; | |||
int fCaptureChannels; | |||
int fPlaybackChannels; | |||
// Static tables since the actual number of ports may be changed by the real driver | |||
// thus dynamic allocation is more difficult to handle | |||
jack_port_id_t fCapturePortList[DRIVER_PORT_NUM]; | |||
jack_port_id_t fPlaybackPortList[DRIVER_PORT_NUM]; | |||
jack_port_id_t fMonitorPortList[DRIVER_PORT_NUM]; | |||
bool fWithMonitorPorts; | |||
std::list<std::pair<std::string, std::string> > fConnections; // Connections list | |||
void CycleIncTime(); | |||
void CycleTakeBeginTime(); | |||
void CycleTakeEndTime(); | |||
@@ -198,7 +215,7 @@ class SERVER_EXPORT JackDriver : public JackDriverClientInterface | |||
virtual int Close(); | |||
virtual int Process(); | |||
virtual int Attach(); | |||
virtual int Detach(); | |||
@@ -217,6 +234,9 @@ class SERVER_EXPORT JackDriver : public JackDriverClientInterface | |||
int ProcessRead(); | |||
int ProcessWrite(); | |||
virtual void SaveConnections(); | |||
virtual void RestoreConnections(); | |||
virtual bool IsFixedBufferSize(); | |||
virtual int SetBufferSize(jack_nframes_t buffer_size); | |||
virtual int SetSampleRate(jack_nframes_t sample_rate); | |||
@@ -33,9 +33,7 @@ namespace Jack | |||
{ | |||
JackMidiDriver::JackMidiDriver(const char* name, const char* alias, JackLockedEngine* engine, JackSynchro* table) | |||
: JackDriver(name, alias, engine, table), | |||
fCaptureChannels(0), | |||
fPlaybackChannels(0) | |||
: JackDriver(name, alias, engine, table) | |||
{} | |||
JackMidiDriver::~JackMidiDriver() | |||
@@ -224,42 +222,4 @@ JackMidiBuffer* JackMidiDriver::GetOutputBuffer(int port_index) | |||
return (JackMidiBuffer*)fGraphManager->GetBuffer(fPlaybackPortList[port_index], fEngineControl->fBufferSize); | |||
} | |||
void JackMidiDriver::SaveConnections() | |||
{ | |||
const char** connections; | |||
fConnections.clear(); | |||
for (int i = 0; i < fCaptureChannels; ++i) { | |||
if (fCapturePortList[i] && (connections = fGraphManager->GetConnections(fCapturePortList[i])) != 0) { | |||
for (int j = 0; connections[j]; j++) { | |||
fConnections.push_back(make_pair(fGraphManager->GetPort(fCapturePortList[i])->GetName(), connections[j])); | |||
jack_info("Save connection: %s %s", fGraphManager->GetPort(fCapturePortList[i])->GetName(), connections[j]); | |||
} | |||
free(connections); | |||
} | |||
} | |||
for (int i = 0; i < fPlaybackChannels; ++i) { | |||
if (fPlaybackPortList[i] && (connections = fGraphManager->GetConnections(fPlaybackPortList[i])) != 0) { | |||
for (int j = 0; connections[j]; j++) { | |||
fConnections.push_back(make_pair(connections[j], fGraphManager->GetPort(fPlaybackPortList[i])->GetName())); | |||
jack_info("Save connection: %s %s", connections[j], fGraphManager->GetPort(fPlaybackPortList[i])->GetName()); | |||
} | |||
free(connections); | |||
} | |||
} | |||
} | |||
void JackMidiDriver::RestoreConnections() | |||
{ | |||
list<pair<string, string> >::const_iterator it; | |||
for (it = fConnections.begin(); it != fConnections.end(); it++) { | |||
pair<string, string> connection = *it; | |||
jack_info("Restore connection: %s %s", connection.first.c_str(), connection.second.c_str()); | |||
fEngine->PortConnect(fClientControl.fRefNum, connection.first.c_str(), connection.second.c_str()); | |||
} | |||
} | |||
} // end of namespace |
@@ -37,14 +37,6 @@ class SERVER_EXPORT JackMidiDriver : public JackDriver | |||
protected: | |||
int fCaptureChannels; | |||
int fPlaybackChannels; | |||
std::list<std::pair<std::string, std::string> > fConnections; // Connections list | |||
jack_port_id_t fCapturePortList[DRIVER_PORT_NUM]; | |||
jack_port_id_t fPlaybackPortList[DRIVER_PORT_NUM]; | |||
JackMidiBuffer* GetInputBuffer(int port_index); | |||
JackMidiBuffer* GetOutputBuffer(int port_index); | |||
@@ -56,9 +48,6 @@ class SERVER_EXPORT JackMidiDriver : public JackDriver | |||
virtual void UpdateLatencies(); | |||
void SaveConnections(); | |||
void RestoreConnections(); | |||
public: | |||
JackMidiDriver(const char* name, const char* alias, JackLockedEngine* engine, JackSynchro* table); | |||