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.