Audio/AudioControl: Allow muting mixer channels from config.py
[audiocontrol.git] / Mixer.py
index 264184d..4ef57fe 100644 (file)
--- a/Mixer.py
+++ b/Mixer.py
@@ -52,19 +52,32 @@ class Mixer(Views.View):
             # channel_count
             self._channels = int(data[0])
             self._volume = [ None ] * self._channels
+            premutes = None
+            if self._muteState is not None:
+                premutes = self._muteState
             self._muteState = [ self.ACTIVE ] * self._channels
+            if premutes:
+                for i in range(len(self._muteState)):
+                    if i < len(premutes):
+                        self._muteState[i] = premutes[i]
             while  len(self._channelNames) < self._channels:
                 self._channelNames.append("Channel %d" % (len(self._channelNames)+1))
             self._redraw()
             for i in range(self._channels):
-                self._get(i+1)
+                self._set(i+1, 0.0)
                 
         return []
 
     def mute(self, channel):
-        if self._muteState[channel-1] == self.ACTIVE:
+        if self._channels is None:
+            if self._muteState is None:
+                self._muteState = []
+            while(len(self._muteState) < channel) : self._muteState.append( self.ACTIVE )
             self._muteState[channel-1] = self.PENDING
-            self._get(channel)
+        else:
+            if self._muteState[channel-1] == self.ACTIVE:
+                self._muteState[channel-1] = self.PENDING
+                self._get(channel)
 
     def unmute(self, channel):
         if self._muteState[channel-1] != self.ACTIVE: