Index: src/sys/dev/audio.c
===================================================================
RCS file: /cvsroot/src/sys/dev/Attic/audio.c,v
retrieving revision 1.357.2.13
diff -u -r1.357.2.13 audio.c
--- src/sys/dev/audio.c 7 Jun 2018 18:24:16 -0000 1.357.2.13
+++ src/sys/dev/audio.c 18 Sep 2019 20:18:48 -0000
@@ -2260,6 +2260,10 @@
goto bad;
}
+ if (sc->sc_usemixer && audio_can_capture(sc))
+ audio_init_ringbuffer(sc, &vc->sc_mrr, AUMODE_PLAY);
+ if (sc->sc_usemixer && audio_can_playback(sc))
+ audio_init_ringbuffer(sc, &vc->sc_mpr, AUMODE_PLAY);
if (!sc->sc_usemixer || sc->sc_opens + sc->sc_recopens == 0) {
sc->sc_credentials = kauth_cred_get();
kauth_cred_hold(sc->sc_credentials);
@@ -3799,6 +3803,8 @@
inp = cb->s.inp;
cb->stamp += blksize;
if (cb->mmapped) {
+ cb->s.inp = audio_stream_add_inp(&cb->s, cb->s.inp,
+ blksize);
DPRINTF(("audio_pint: vc=%p mmapped outp=%p cc=%d "
"inp=%p\n", vc, cb->s.outp, blksize,
cb->s.inp));
@@ -5697,12 +5703,14 @@
adj_done: \
orig[m] = result; \
} \
+ orig = &orig[m]; \
+ tomix = &tomix[m]; \
\
- if (&orig[m] >= \
+ if (orig >= \
(type *)sc->sc_mixring.sc_mpr.s.end) \
orig = \
(type *)sc->sc_mixring.sc_mpr.s.start; \
- if (&tomix[m] >= (type *)cb->s.end) \
+ if (tomix >= (type *)cb->s.end) \
tomix = (type *)cb->s.start; \
\
resid -= cc; \