--- a/support/mixer-qt4/ffado/panelmanager.py 2018-01-11 12:27:20.518923209 +0900 +++ a/support/mixer-qt4/ffado/panelmanager.py 2018-01-11 12:31:03.956299962 +0900 @@ -38,6 +38,7 @@ import sys import time +import importlib import logging log = logging.getLogger('panelmanager') @@ -302,20 +303,15 @@ # # Specific (or dummy) mixer widgets get loaded in the following # + found = False if 'mixer' in dev and dev['mixer'] != None: mixerapp = dev['mixer'] - global mixerwidget - exec( """ -try: - import ffado.mixer.%s - globals()["mixerwidget"] = ffado.mixer.%s.%s( w ) - found = True -except ImportError: - log.debug("bypassdbus set, %s module not available: ignored") - found = False -""" % (mixerapp.lower(), mixerapp.lower(), mixerapp, mixerapp.lower()) ) - else: - found = False + try: + mixer_module = importlib.import_module("ffado.mixer.%s" % mixerapp.lower()) + mixerwidget = getattr(mixer_module, mixerapp)(w) + found = True + except ImportError: + log.debug("bypassdbus set, %s module not available: ignored" % mixerapp.lower()) if not found: mixerwidget = Dummy( w ) --- a/support/mixer-qt4/ffado/widgets/crossbarrouter.py 2018-01-11 12:34:10.200777889 +0900 +++ b/support/mixer-qt4/ffado/widgets/crossbarrouter.py 2018-01-11 12:45:13.278911705 +0900 @@ -194,7 +194,7 @@ #log.debug("Got %i peaks" % len(peakvalues)) for peak in peakvalues: #log.debug("peak = [%s,%s]" % (str(peak[0]),str(peak[1]))) - if peak[0] >= 0: + if peak[1] >= 0: self.switchers[peak[0]].peakValue(peak[1]) def updateMixerRouting(self): --- a/support/mixer-qt4/ffado/widgets/matrixmixer.py 2018-01-11 12:54:27.545361864 +0900 +++ b/support/mixer-qt4/ffado/widgets/matrixmixer.py 2018-01-11 12:56:36.899124318 +0900 @@ -512,7 +512,7 @@ self.rowHeaders[j].lbl.setText(row_name) def updateValues(self, n): - nbitems = len(n)/3 + nbitems = len(n) // 3 for i in range(nbitems): n_0 = n[3*i] n_1 = n[3*i+1] @@ -951,7 +951,7 @@ return self.interface.setValue(In, Out, val) def updateValues(self, n): - nbitems = len(n)/3 + nbitems = len(n) // 3 for j in range(nbitems): n_0 = n[3*j] n_1 = n[3*j+1] @@ -1406,7 +1406,7 @@ def matrixControlChanged(self, n): # Update value needed for "per Out" view #log.debug("Update per Output( %s )" % str(n)) - nbitems = len(n)/3 + nbitems = len(n) // 3 if (self.rule == "Columns_are_inputs"): n_t = n else: @@ -1420,7 +1420,7 @@ def sliderControlChanged(self, n): # Update value needed for matrix view #log.debug("Update Matrix( %s )" % str(n)) - nbitems = len(n)/3 + nbitems = len(n) // 3 if (((self.rule == "Columns_are_inputs") and not self.transpose) or ((self.rule != "Columns_are_inputs") and self.transpose)): n_t = () for i in range(nbitems): @@ -1512,7 +1512,7 @@ log.debug("Number of stereo output channels must be specified") return False n = int(readMixerString[idx+2]) - if n > self.perOut.nbOut/2: + if n > self.perOut.nbOut // 2: log.debug("Incoherent number of stereo channels") return False if n > 0: