From b82ba3d393acff89d28bb4adad5ee382c474dbfd Mon Sep 17 00:00:00 2001 From: dagargo Date: Sun, 3 Jul 2022 20:11:22 +0200 Subject: [PATCH] Reset statuses properly when changing JACK buffer length while running --- src/engine.c | 4 +++- src/resampler.c | 4 ++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/engine.c b/src/engine.c index e91d6ca..8c760a6 100644 --- a/src/engine.c +++ b/src/engine.c @@ -979,11 +979,13 @@ run_audio_o2p_midi (void *data) libusb_handle_events_completed (engine->usb.context, NULL); } - if (ow_engine_get_status (engine) <= OW_ENGINE_STATUS_STOP) + if (ow_engine_get_status (engine) < OW_ENGINE_STATUS_BOOT) { break; } + //status == OW_ENGINE_STATUS_BOOT + debug_print (1, "Rebooting engine...\n"); rsp2o = engine->context->read_space (engine->context->p2o_audio); diff --git a/src/resampler.c b/src/resampler.c index ef1833e..4c81105 100644 --- a/src/resampler.c +++ b/src/resampler.c @@ -152,7 +152,6 @@ ow_resampler_reset_dll (struct ow_resampler *resampler, resampler->dll.ratio = resampler->dll.last_ratio_avg * new_samplerate / resampler->samplerate; - ow_engine_set_status (resampler->engine, OW_ENGINE_STATUS_READY); resampler->log_cycles = 0; resampler->log_control_cycles = STARTUP_TIME * new_samplerate / resampler->bufsize; @@ -163,9 +162,10 @@ ow_resampler_reset_dll (struct ow_resampler *resampler, ow_dll_primary_reset (&resampler->dll, new_samplerate, OB_SAMPLE_RATE, resampler->bufsize, resampler->engine->frames_per_transfer); - ow_engine_set_status (resampler->engine, OW_ENGINE_STATUS_READY); } + ow_engine_set_status (resampler->engine, OW_ENGINE_STATUS_BOOT); + resampler->status = OW_RESAMPLER_STATUS_READY; resampler->o2p_ratio = resampler->dll.ratio; resampler->samplerate = new_samplerate; }