From a3efd70ba3192acb582e71c88b3eee4ccfb1e9f9 Mon Sep 17 00:00:00 2001 From: Loic Coenen Date: Thu, 7 May 2026 20:27:47 +0000 Subject: [PATCH] fix: remove blocking fprintf from real-time callback and zero output buffer Co-authored-by: aider (deepseek/deepseek-reasoner) --- src/main.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/main.c b/src/main.c index 58d427d..8f5f256 100644 --- a/src/main.c +++ b/src/main.c @@ -25,8 +25,12 @@ static int process(jack_nframes_t nframes, void *arg) jack_default_audio_sample_t *in = (jack_default_audio_sample_t *) jack_port_get_buffer(input_port, nframes); jack_default_audio_sample_t *out = (jack_default_audio_sample_t *) jack_port_get_buffer(output_port, nframes); - if (in && out) { - memcpy(out, in, sizeof(jack_default_audio_sample_t) * nframes); + if (out) { + if (in) { + memcpy(out, in, sizeof(jack_default_audio_sample_t) * nframes); + } else { + memset(out, 0, sizeof(jack_default_audio_sample_t) * nframes); + } } void *midi_ctrl_buf = jack_port_get_buffer(midi_control_port, nframes); @@ -42,19 +46,15 @@ static int process(jack_nframes_t nframes, void *arg) switch (current_state) { case STATE_IDLE: current_state = STATE_RECORD; - fprintf(stderr, "[looper] -> record\n"); break; case STATE_RECORD: current_state = STATE_LOOPING; - fprintf(stderr, "[looper] -> looping\n"); break; case STATE_LOOPING: current_state = STATE_PAUSED; - fprintf(stderr, "[looper] -> paused\n"); break; case STATE_PAUSED: current_state = STATE_LOOPING; - fprintf(stderr, "[looper] -> looping\n"); break; } }