From 2f7374f748e8a02e5e469dc67c232157609e4ca2 Mon Sep 17 00:00:00 2001 From: Alex P Date: Sat, 20 Sep 2025 21:14:02 +0000 Subject: [PATCH] Fix: ensure audio subprocesses are not started, even after reboots, if Audio USB Gadget functions are disabled --- jsonrpc.go | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/jsonrpc.go b/jsonrpc.go index cfc777ad..3400312e 100644 --- a/jsonrpc.go +++ b/jsonrpc.go @@ -964,6 +964,21 @@ func rpcSetUsbDevices(usbDevices usbgadget.Devices) error { logger.Info().Msg("audio input manager stopped") } + // Stop global audio input supervisor if active + audioInputSupervisor := audio.GetAudioInputSupervisor() + if audioInputSupervisor != nil && audioInputSupervisor.IsRunning() { + logger.Info().Msg("stopping global audio input supervisor") + audioInputSupervisor.Stop() + // Wait for audio input supervisor to fully stop + for i := 0; i < 50; i++ { // Wait up to 5 seconds + if !audioInputSupervisor.IsRunning() { + break + } + time.Sleep(100 * time.Millisecond) + } + logger.Info().Msg("global audio input supervisor stopped") + } + // Stop audio output supervisor if audioSupervisor != nil && audioSupervisor.IsRunning() { logger.Info().Msg("stopping audio output supervisor") @@ -1058,6 +1073,21 @@ func rpcSetUsbDeviceState(device string, enabled bool) error { logger.Info().Msg("audio input manager stopped") } + // Stop global audio input supervisor if active + audioInputSupervisor := audio.GetAudioInputSupervisor() + if audioInputSupervisor != nil && audioInputSupervisor.IsRunning() { + logger.Info().Msg("stopping global audio input supervisor") + audioInputSupervisor.Stop() + // Wait for audio input supervisor to fully stop + for i := 0; i < 50; i++ { // Wait up to 5 seconds + if !audioInputSupervisor.IsRunning() { + break + } + time.Sleep(100 * time.Millisecond) + } + logger.Info().Msg("global audio input supervisor stopped") + } + // Stop audio output supervisor if audioSupervisor != nil && audioSupervisor.IsRunning() { logger.Info().Msg("stopping audio output supervisor")