From bf1c823d294bef929597796fc3509fd57c42c227 Mon Sep 17 00:00:00 2001 From: rdanbrook <1869094+rdanbrook@users.noreply.github.com> Date: Wed, 4 Dec 2024 19:03:15 -0600 Subject: [PATCH] FLTK: Only open the microphone if the game or emulated system actually needs it --- source/fltkui/audiomanager.cpp | 45 +++++++++++++++++----------------- 1 file changed, 23 insertions(+), 22 deletions(-) diff --git a/source/fltkui/audiomanager.cpp b/source/fltkui/audiomanager.cpp index 81006c6..808a6bb 100644 --- a/source/fltkui/audiomanager.cpp +++ b/source/fltkui/audiomanager.cpp @@ -124,28 +124,6 @@ AudioManager::AudioManager(JGManager& jgm, SettingManager& setmgr) } SDL_PauseAudioDevice(dev, 1); // Setting to 0 unpauses - - // Discover any audio recording devices - int miccount = SDL_GetNumAudioDevices(1); - std::string micname{}; - - for (int i = 0; i < miccount; ++i) { - micname = std::string{SDL_GetAudioDeviceName(i, 1)}; - } - - if (miccount) { - spec_in.channels = micinfo.channels; - spec_in.freq = micinfo.rate; - spec_in.silence = 0; - spec_in.samples = 512; - spec_in.userdata = &jgm; - spec_in.format = spec.format; - spec_in.callback = audio_cb_input; - dev_in = SDL_OpenAudioDevice(micname.c_str(), 1, &spec_in, &obtained_in, - SDL_AUDIO_ALLOW_ANY_CHANGE); - SDL_PauseAudioDevice(dev_in, 1); // Start in paused state - LogDriver::log(LogLevel::Debug, "Microphone: " + micname); - } } AudioManager::~AudioManager() { @@ -254,4 +232,27 @@ void AudioManager::unpause() { if (dev_in && jgm.get_coreinfo()->hints & JG_HINT_INPUT_AUDIO) { SDL_PauseAudioDevice(dev_in, 0); } + else if (jgm.get_coreinfo()->hints & JG_HINT_INPUT_AUDIO) { + // Discover any audio recording devices + int miccount = SDL_GetNumAudioDevices(1); + std::string micname{}; + + for (int i = 0; i < miccount; ++i) { + micname = std::string{SDL_GetAudioDeviceName(i, 1)}; + } + + if (miccount) { + spec_in.channels = micinfo.channels; + spec_in.freq = micinfo.rate; + spec_in.silence = 0; + spec_in.samples = 512; + spec_in.userdata = &jgm; + spec_in.format = spec.format; + spec_in.callback = audio_cb_input; + dev_in = SDL_OpenAudioDevice(micname.c_str(), 1, &spec_in, &obtained_in, + SDL_AUDIO_ALLOW_ANY_CHANGE); + SDL_PauseAudioDevice(dev_in, 0); // Unpause + LogDriver::log(LogLevel::Debug, "Microphone: " + micname); + } + } }