From a99c6aa8e08d440d9b049007747ac769c2fff431 Mon Sep 17 00:00:00 2001 From: MihailRis Date: Mon, 20 Jul 2026 21:15:59 +0300 Subject: [PATCH] fix audio input device settings --- res/layouts/pages/settings_audio.xml.lua | 9 +++++++++ src/audio/AL/ALAudio.cpp | 3 +++ src/audio/audio.cpp | 11 ++++++++--- src/settings.hpp | 2 +- 4 files changed, 21 insertions(+), 4 deletions(-) diff --git a/res/layouts/pages/settings_audio.xml.lua b/res/layouts/pages/settings_audio.xml.lua index 475ccc51b..97628d1e8 100644 --- a/res/layouts/pages/settings_audio.xml.lua +++ b/res/layouts/pages/settings_audio.xml.lua @@ -31,6 +31,14 @@ function update_checkbox_setting(id, value) document.input_device_select.enabled = recording_enabled document.input_volume_inner.enabled = recording_enabled document.input_volume_outer.enabled = recording_enabled + + local selectbox = document.input_device_select + local info = audio.input.get_input_info() + if info then + selectbox.value = info.device_specifier + else + selectbox.value = app.get_setting("audio.input-device") + end end function create_checkbox(id, name, tooltip) @@ -84,6 +92,7 @@ function on_open() table.insert(devices, {value=name, text=name}) end selectbox.options = devices + local info = audio.input.get_input_info() if info then selectbox.value = info.device_specifier diff --git a/src/audio/AL/ALAudio.cpp b/src/audio/AL/ALAudio.cpp index d681d15a2..c3ec5b24f 100644 --- a/src/audio/AL/ALAudio.cpp +++ b/src/audio/AL/ALAudio.cpp @@ -5,6 +5,7 @@ #include "debug/Logger.hpp" #include "alutil.hpp" +#include "util/stringutil.hpp" #include "../MemoryPCMStream.hpp" static debug::Logger logger("al-audio"); @@ -99,6 +100,8 @@ ALInputDevice::ALInputDevice( if (deviceName) { deviceSpecifier = std::string(deviceName); + logger.info() << "created input device with specifier " + << util::quote(deviceSpecifier); } else { logger.warning() << "could not retrieve input device specifier"; } diff --git a/src/audio/audio.cpp b/src/audio/audio.cpp index d6e32d089..2ddcb76f5 100644 --- a/src/audio/audio.cpp +++ b/src/audio/audio.cpp @@ -205,12 +205,17 @@ void audio::initialize( return; } if (enabled) { - logger.info() << "recording enabled; input device is " - << settings.inputDevice.get(); + const auto& targetDevice = settings.inputDevice.get(); + logger.info() << "recording enabled; target input device is " + << (targetDevice.empty() ? "not specified" + : targetDevice); ::input_device = backend->openInputDevice( settings.inputDevice.get(), 44100, 1, 16 ); - ::input_device->startCapture(); + if (::input_device != nullptr) { + logger.error() << "could not create input device"; + ::input_device->startCapture(); + } } else { if (::input_device) { ::input_device->stopCapture(); diff --git a/src/settings.hpp b/src/settings.hpp index 5220ca328..bc83ba345 100644 --- a/src/settings.hpp +++ b/src/settings.hpp @@ -18,7 +18,7 @@ struct AudioSettings { NumberSetting volumeAmbient {1.0f, 0.0f, 1.0f, setting_format::percent}; NumberSetting volumeMusic {1.0f, 0.0f, 1.0f, setting_format::percent}; - StringSetting inputDevice {"auto"}; + StringSetting inputDevice {""}; FlagSetting acousticEffects {true}; };