diff options
| author | Cameron Grant <cg@FreeBSD.org> | 2002-01-23 05:35:12 +0000 |
|---|---|---|
| committer | Cameron Grant <cg@FreeBSD.org> | 2002-01-23 05:35:12 +0000 |
| commit | 0dd4f3508ebd1c06d6c96596a8c4f7635e48dccd (patch) | |
| tree | 996a2439691204540809c671baf6764d97a44769 /sys/dev | |
| parent | 1e59d53c22fd34100ec06e2954b274a27ac685b5 (diff) | |
Notes
Diffstat (limited to 'sys/dev')
| -rw-r--r-- | sys/dev/sound/pcm/channel.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/sys/dev/sound/pcm/channel.c b/sys/dev/sound/pcm/channel.c index 5a8fb1c8ff020..63cd94e74e687 100644 --- a/sys/dev/sound/pcm/channel.c +++ b/sys/dev/sound/pcm/channel.c @@ -788,6 +788,7 @@ chn_tryspeed(struct pcm_channel *c, int speed) struct pcm_feeder *f; struct snd_dbuf *b = c->bufhard; struct snd_dbuf *bs = c->bufsoft; + struct snd_dbuf *x; int r, delta; CHN_LOCKASSERT(c); @@ -832,13 +833,15 @@ chn_tryspeed(struct pcm_channel *c, int speed) if (f == NULL) goto out; - r = FEEDER_SET(f, FEEDRATE_SRC, sndbuf_getspd(bs)); - DEB(printf("feeder_set(FEEDRATE_SRC, %d) = %d\n", sndbuf_getspd(bs), r)); + x = (c->direction == PCMDIR_REC)? b : bs; + r = FEEDER_SET(f, FEEDRATE_SRC, sndbuf_getspd(x)); + DEB(printf("feeder_set(FEEDRATE_SRC, %d) = %d\n", sndbuf_getspd(x), r)); if (r) goto out; - r = FEEDER_SET(f, FEEDRATE_DST, sndbuf_getspd(b)); - DEB(printf("feeder_set(FEEDRATE_DST, %d) = %d\n", sndbuf_getspd(b), r)); + x = (c->direction == PCMDIR_REC)? bs : b; + r = FEEDER_SET(f, FEEDRATE_DST, sndbuf_getspd(x)); + DEB(printf("feeder_set(FEEDRATE_DST, %d) = %d\n", sndbuf_getspd(x), r)); out: DEB(printf("setspeed done, r = %d\n", r)); return r; |
