diff --git a/common/JackMidiDriver.cpp b/common/JackMidiDriver.cpp index 4de11989..6b3f2935 100644 --- a/common/JackMidiDriver.cpp +++ b/common/JackMidiDriver.cpp @@ -143,6 +143,27 @@ int JackMidiDriver::Write() return 0; } +int JackMidiDriver::SetBufferSize(jack_nframes_t buffer_size) +{ + jack_latency_range_t latency_range; + latency_range.max = buffer_size; + latency_range.min = buffer_size; + for (int i = 0; i < fCaptureChannels; i++) { + fGraphManager->GetPort(fCapturePortList[i])-> + SetLatencyRange(JackCaptureLatency, &latency_range); + } + if (! fEngineControl->fSyncMode) { + buffer_size *= 2; + latency_range.max = buffer_size; + latency_range.min = buffer_size; + } + for (int i = 0; i < fPlaybackChannels; i++) { + fGraphManager->GetPort(fPlaybackPortList[i])-> + SetLatencyRange(JackPlaybackLatency, &latency_range); + } + return 0; +} + int JackMidiDriver::ProcessNull() { return 0; diff --git a/common/JackMidiDriver.h b/common/JackMidiDriver.h index 45fe484c..044e8d23 100644 --- a/common/JackMidiDriver.h +++ b/common/JackMidiDriver.h @@ -69,6 +69,8 @@ class SERVER_EXPORT JackMidiDriver : public JackDriver jack_nframes_t capture_latency, jack_nframes_t playback_latency); + virtual int SetBufferSize(jack_nframes_t buffer_size); + virtual int ProcessRead(); virtual int ProcessWrite();