Возможное состояние гонки при подключении плагинов для наушников
В настоящее время я пытаюсь запустить скрипт для подключения к наушникам. Я узнал, что я могу писать сценарий довольно легко, как событие acpi
.
Я создал файл в /etc/acpi/events/
с помощью event event=jack[ /]headphone
, который затем просто вызывает мой скрипт.
- Обращайтесь с несколькими источниками звука в качестве одного виртуального микрофона
- Докер с аудио в режиме реального времени / с низкой задержкой? (для виртуальных усилителей, таких как Guitarix ...)
- Вставить dmix в JACK
- Звуковой модуль alsa snd_aloop
- Нормальный звук прекращается, когда запускается jackd
Я также определил файл и точную строку, в которой содержится информация о том, подключены ли в настоящее время наушники или нет. В файле /proc/asound/card0/codec#0
один конкретный Pin-ctls:
равен 0x00
если подключен, и 0x40: OUT
если он отключен.
Теперь проблема, которую я вижу там, – это когда я проверяю текущий статус гнезда для наушников, как только произойдет событие acpi, будет ли файл codec#0
содержать текущее значение? Могу ли я здесь участвовать в гонке? Или безопасно это использовать?
One Solution collect form web for “Возможное состояние гонки при подключении плагинов для наушников”
Я узнал, что проблему можно легко обойти, проверив конкретное событие plug
/ unplug
на гнезде. Нижеприведенное решение даст сценарию информацию о конкретных событиях разъема, которые будут отключать звук, когда гнездо отключено от сети.
/etc/acpi/events/jack
:
event=jack[ /]headphone action=/etc/acpi/actions/jack.sh "%e"
/etc/acpi/actions/jack.sh
:
#!/bin/bash event=$(echo "$1" | cut -d " " -f 3) case "$event" in plug) ;; unplug) amixer set Master mute ;; *) #null esac