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; \