Use the sioctl_open(3) OpenBSD API to access vol

Starting with OpenBSD 6.7 regular users cannot access raw audio devices
anymore, for improved security.

Instead use the sioctl_open(3) API to access and manipulate audio
controls exposed by sndiod(8). On the first call a permanent connection
is established with the running sndiod daemon, and call-back functions
are registered which are triggered when audio controls are changed
(e.g., a USB headset is attached) or when the volume is modified. On
subsequent calls we poll for changes; if there are no volume changes
this costs virtually nothing.

Joint work with Alexandre Ratchov
This commit is contained in:
Ingo Feinerer
2020-05-09 12:03:20 +02:00
committed by Aaron Marcher
parent aaf279f6dd
commit 9ac721c23f
3 changed files with 161 additions and 51 deletions

View File

@ -14,6 +14,7 @@ X11LIB = /usr/X11R6/lib
CPPFLAGS = -I$(X11INC) -D_DEFAULT_SOURCE
CFLAGS = -std=c99 -pedantic -Wall -Wextra -Os
LDFLAGS = -L$(X11LIB) -s
# OpenBSD: add -lsndio
LDLIBS = -lX11
# compiler and linker