Module Name: src Committed By: nat Date: Sat Jan 6 23:15:36 UTC 2018
Modified Files: src/sys/dev: audio.c Log Message: Only signal a pause change on a transition of a pause change. This addresses a problem found in audio/sox causing high cpu usage. Path and analysis by Onno van der Linden. To generate a diff of this commit: cvs rdiff -u -r1.446 -r1.447 src/sys/dev/audio.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/dev/audio.c diff -u src/sys/dev/audio.c:1.446 src/sys/dev/audio.c:1.447 --- src/sys/dev/audio.c:1.446 Sat Jan 6 21:16:36 2018 +++ src/sys/dev/audio.c Sat Jan 6 23:15:36 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: audio.c,v 1.446 2018/01/06 21:16:36 nat Exp $ */ +/* $NetBSD: audio.c,v 1.447 2018/01/06 23:15:36 nat Exp $ */ /*- * Copyright (c) 2016 Nathanial Sloss <nathanialsl...@yahoo.com.au> @@ -148,7 +148,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: audio.c,v 1.446 2018/01/06 21:16:36 nat Exp $"); +__KERNEL_RCSID(0, "$NetBSD: audio.c,v 1.447 2018/01/06 23:15:36 nat Exp $"); #ifdef _KERNEL_OPT #include "audio.h" @@ -4762,14 +4762,18 @@ audiosetinfo(struct audio_softc *sc, str } if (SPECIFIED_CH(p->pause)) { - vc->sc_mpr.pause = p->pause; pbus = !p->pause; - pausechange = true; + if (pbus != !vc->sc_mpr.pause) { + vc->sc_mpr.pause = p->pause; + pausechange = true; + } } if (SPECIFIED_CH(r->pause)) { - vc->sc_mrr.pause = r->pause; rbus = !r->pause; - pausechange = true; + if (rbus != !vc->sc_mrr.pause) { + vc->sc_mrr.pause = r->pause; + pausechange = true; + } } if (SPECIFIED(ai->mode)) {