On Wed, Nov 18, 2020 at 11:00:17AM +0100, Alexandre Ratchov wrote:
> Thanks; semarie suggested a similar diff, so below is an attempt to
> take into account all the suggestions:
>
> - add AUDIOPLAYDEVICE, to handle play-only devices as well. We've the
> very same problem for them.
>
> - use AUDIODEVICE if play-only (rec-only) mode is used but the
> corresponding AUDIOPLAYDEVICE (AUDIORECDEVICE) var is not defined
>
> - minimal update for AUDIO{PLAY,REC}DEVICE in the man page
>
> OK?
This stopped working for me today when I tested it. My box saw a reboot
though.
:-(
I used AUDIOPLAYDEVICE=snd/0 AUDIORECDEVICE=snd/1 audacity
also
AUDIODEVICE=snd/0 AUDIORECDEVICE=snd/1 audacity
I'm looking over the code a little, but I can't guarantee I'll find what's
wrong.
Best Regards,
-peter
> Index: sio.c
> ===================================================================
> RCS file: /cvs/src/lib/libsndio/sio.c,v
> retrieving revision 1.24
> diff -u -p -r1.24 sio.c
> --- sio.c 29 Jun 2019 06:05:26 -0000 1.24
> +++ sio.c 18 Nov 2020 09:49:24 -0000
> @@ -52,7 +52,12 @@ sio_open(const char *str, unsigned int m
> if (str == NULL) /* backward compat */
> str = devany;
> if (strcmp(str, devany) == 0 && !issetugid()) {
> - str = getenv("AUDIODEVICE");
> + if ((mode & SIO_PLAY) == 0)
> + str = getenv("AUDIORECDEVICE");
> + if ((mode & SIO_REC) == 0)
> + str = getenv("AUDIOPLAYDEVICE");
> + if (mode == (SIO_PLAY | SIO_REC) || str == NULL)
> + str = getenv("AUDIODEVICE");
> if (str == NULL)
> str = devany;
> }
> Index: sndio.7
> ===================================================================
> RCS file: /cvs/src/lib/libsndio/sndio.7,v
> retrieving revision 1.24
> diff -u -p -r1.24 sndio.7
> --- sndio.7 18 Jul 2020 05:01:14 -0000 1.24
> +++ sndio.7 18 Nov 2020 09:49:24 -0000
> @@ -151,9 +151,11 @@ If
> .Cm default
> is used as the audio device, the program will use the
> one specified in the
> -.Ev AUDIODEVICE
> -environment variable.
> -If it is not set, the program first tries to connect to
> +.Ev AUDIODEVICE , AUDIOPLAYDEVICE
> +and/or
> +.Ev AUDIORECDEVICE
> +environment variables.
> +If they are not set, the program first tries to connect to
> .Li snd/0 .
> If that fails, it then tries to use
> .Li rsnd/0 .
> @@ -190,10 +192,20 @@ and contains 128 bits of raw random data
> If a session needs to be shared between multiple users, they
> can connect to the server using the same cookie.
> .Sh ENVIRONMENT
> -.Bl -tag -width "AUDIODEVICEXXX" -compact
> +.Bl -tag -width "AUDIOPLAYDEVICE" -compact
> .It Ev AUDIODEVICE
> Audio device descriptor to use
> when no descriptor is explicitly specified to a program.
> +.It Ev AUDIOPLAYDEVICE
> +Audio device descriptor to use for play-only mode
> +when no descriptor is explicitly specified to a program.
> +Overrides
> +.Ev AUDIODEVICE .
> +.It Ev AUDIORECDEVICE
> +Audio device descriptor to use for record-only mode
> +when no descriptor is explicitly specified to a program.
> +Overrides
> +.Ev AUDIODEVICE .
> .It Ev MIDIDEVICE
> MIDI port descriptor to use
> when no descriptor is explicitly specified to a program.