summaryrefslogtreecommitdiff
path: root/src/mixer.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/mixer.cc')
-rw-r--r--src/mixer.cc33
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;
+}