/* * cbl_close — выключить CBL (запись 0 в порт управления, как в * сэмпле), снять хук насоса, освободить буфер тишины (если был * аллоцирован под CBL_UNDERRUN_SILENCE) и отпустить IM2-таблицу. * Идемпотентно; вызывается и из atexit. */ #include #include "_cbl.h" #include "../irq/_irq.h" void cbl_close(void) { if (!_irq_cbl_hook) return; IRQ_DISABLE(); _cbl_ctrl(0); _irq_cbl_hook = 0; IRQ_ENABLE(); free(_cbl_silence); _cbl_silence = 0; _irq_table_unref(); }