From 633bac9e82aef192a803666aaf3d3dcff920ac0c Mon Sep 17 00:00:00 2001 From: Bent Bisballe Nyeng Date: Wed, 13 Jul 2016 11:25:59 +0200 Subject: Use the latency reported by the engine in the jack and wavfile output modules. --- drumgizmo/jackclient.cc | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'drumgizmo/jackclient.cc') diff --git a/drumgizmo/jackclient.cc b/drumgizmo/jackclient.cc index e493e1b..fb71b1b 100644 --- a/drumgizmo/jackclient.cc +++ b/drumgizmo/jackclient.cc @@ -57,6 +57,12 @@ int JackClient::wrapJackProcess(jack_nframes_t nframes, void* arg) return static_cast(arg)->process(nframes); } +void JackClient::latencyCallback(jack_latency_callback_mode_t mode, + void* arg) +{ + static_cast(arg)->jackLatencyCallback(mode); +} + JackClient::JackClient() : client{nullptr} , processes{} @@ -65,6 +71,12 @@ JackClient::JackClient() jack_status_t status; client = jack_client_open("DrumGizmo", JackNullOption, &status); jack_set_process_callback(client, JackClient::wrapJackProcess, this); + + // Register callback which is called by jack when it wants to know about the + // current port latency. + jack_set_latency_callback(client, + JackClient::latencyCallback, + this); } JackClient::~JackClient() @@ -103,6 +115,14 @@ int JackClient::process(jack_nframes_t num_frames) return 0; } +void JackClient::jackLatencyCallback(jack_latency_callback_mode_t mode) +{ + for(auto& ptr : processes) + { + ptr->jackLatencyCallback(mode); + } +} + std::size_t JackClient::getBufferSize() const { return jack_get_buffer_size(client); -- cgit v1.2.3