diff options
Diffstat (limited to 'src/mixer.cc')
-rw-r--r-- | src/mixer.cc | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/src/mixer.cc b/src/mixer.cc index 00cf156..dd9202c 100644 --- a/src/mixer.cc +++ b/src/mixer.cc @@ -336,3 +336,36 @@ bool Mixer::capture() return true; } + +void Mixer::setMuted(bool muted) +{ + if(!isPlayback()) return; + int p = muted?0:1; + int err; + err = snd_mixer_selem_set_playback_switch_all(elem, p); + if(err) { + printf("snd_mixer_selem_set_playback_switch_all: %s, %d\n", + snd_strerror(err), err); + } +} + +bool Mixer::muted() +{ + if(!isPlayback()) return false; + + int err; + + int num = numberOfChannels(); + for(int idx = 0; idx < num; idx++) { + int value; + err = snd_mixer_selem_get_playback_switch(elem, chanId(idx), &value); + if(err) { + printf(" snd_mixer_selem_get_playback_switch: %s, %d\n", + snd_strerror(err), err); + return true; + } + if(value == 0) return true; + } + + return false; +} |