diff options
-rw-r--r-- | sys/dev/sound/pcm/mixer.c | 13 | ||||
-rw-r--r-- | sys/dev/sound/pcm/mixer.h | 1 |
2 files changed, 14 insertions, 0 deletions
diff --git a/sys/dev/sound/pcm/mixer.c b/sys/dev/sound/pcm/mixer.c index 2a00a12..b1f28e0 100644 --- a/sys/dev/sound/pcm/mixer.c +++ b/sys/dev/sound/pcm/mixer.c @@ -62,6 +62,19 @@ mixer_init(snddev_info *d, snd_mixer *m, void *devinfo) } int +mixer_reinit(snddev_info *d) +{ + int i; + if (d == NULL) return -1; + if (d->mixer.init != NULL && d->mixer.init(&d->mixer) == 0) { + for (i = 0; i < SOUND_MIXER_NRDEVICES; i++) + mixer_set(d, i, d->mixer.level[i]); + mixer_setrecsrc(d, d->mixer.recsrc); + return 0; + } else return -1; +} + +int mixer_set(snddev_info *d, unsigned dev, unsigned lev) { if (d == NULL || d->mixer.set == NULL) return -1; diff --git a/sys/dev/sound/pcm/mixer.h b/sys/dev/sound/pcm/mixer.h index aac98a1..a0487d5 100644 --- a/sys/dev/sound/pcm/mixer.h +++ b/sys/dev/sound/pcm/mixer.h @@ -27,6 +27,7 @@ */ extern int mixer_init(snddev_info *d, snd_mixer *m, void *devinfo); +extern int mixer_reinit(snddev_info *d); extern int mixer_set(snddev_info *d, unsigned dev, unsigned lev); extern int mixer_get(snddev_info *d, int dev); extern int mixer_setrecsrc(snddev_info *d, u_int32_t src); |