Skip to content

Commit

Permalink
replaced timer volume poll with one thread
Browse files Browse the repository at this point in the history
  • Loading branch information
TheBigW committed Apr 23, 2015
1 parent 4194155 commit 580e77d
Showing 1 changed file with 47 additions and 36 deletions.
83 changes: 47 additions & 36 deletions ParametricEQ.py
Expand Up @@ -40,6 +40,49 @@
</ui>
"""

class PullVolumeThread(threading.Thread):
def __init__(self, event, eqInst ):
threading.Thread.__init__(self)
self.stopped = event
self.eqInst = eqInst
#TODO: check for Pulse/Alsa somehow...

def run(self):
while not self.stopped.wait(2):
PullVolumeThread.pulseVolumeCheckTimer(self.eqInst)
#PullVolumeThread.alsaVolumeCheckTimer(self)

@staticmethod
def alsaVolumeCheckTimer( paramEQPluginInst ):
#alsa get volume:
#mainVolume = check_output(strParams )
p = subprocess.Popen(["amixer", "sget", " Master"], stdout=subprocess.PIPE)
out, err = p.communicate()
pattern = re.compile('(\d*)%', re.MULTILINE)
alsaVolume = int(pattern.findall( str(out) )[0])
if paramEQPluginInst.mainVolumePercentage != alsaVolume:
paramEQPluginInst.mainVolumePercentage = alsaVolume
print("main volume changed : ", alsaVolume)
paramEQPluginInst.volume_changed(None, None)

@staticmethod
def pulseVolumeCheckTimer( paramEQPluginInst ):
#alsa get volume:
#mainVolume = check_output(strParams )
p = subprocess.Popen(["pactl", "list", "sinks"], stdout=subprocess.PIPE)
out, err = p.communicate()
pattern = re.compile(': 0:\s*(\d*)%', re.MULTILINE)
strOutPut = str(out)
#print( "pactl says: ", strOutPut )
allVolumes = pattern.findall( strOutPut )
#print("all volumes : ", allVolumes)
pulseVolume = int(allVolumes[1])
if paramEQPluginInst.mainVolumePercentage != pulseVolume:
paramEQPluginInst.mainVolumePercentage = pulseVolume
print("main volume changed : ", pulseVolume)
paramEQPluginInst.volume_changed(None, None)


class ParametricEQPlugin (GObject.Object, Peas.Activatable):
object = GObject.property(type=GObject.Object)

Expand All @@ -63,6 +106,7 @@ def do_deactivate(self):
print('filter disabled')
shell = self.object
self._appshell.cleanup()
self.stopFlag.set()
except:
pass
del self.shell_player
Expand Down Expand Up @@ -111,39 +155,6 @@ def volume_changed(self, sp, entry):

mainVolumePercentage = 0

@staticmethod
def alsaVolumeCheckTimer( paramEQPluginInst ):
threading.Timer(2.0, ParametricEQPlugin.alsaVolumeCheckTimer, [paramEQPluginInst]).start()
#alsa get volume:
#mainVolume = check_output(strParams )
p = subprocess.Popen(["amixer", "sget", " Master"], stdout=subprocess.PIPE)
out, err = p.communicate()
pattern = re.compile('(\d*)%', re.MULTILINE)
alsaVolume = int(pattern.findall( str(out) )[0])
if paramEQPluginInst.mainVolumePercentage != alsaVolume:
paramEQPluginInst.mainVolumePercentage = alsaVolume
print("main volume changed : ", alsaVolume)
paramEQPluginInst.volume_changed(None, None)

@staticmethod
def pulseVolumeCheckTimer( paramEQPluginInst ):
threading.Timer(2.0, ParametricEQPlugin.pulseVolumeCheckTimer, [paramEQPluginInst]).start()
#alsa get volume:
#mainVolume = check_output(strParams )
p = subprocess.Popen(["pactl", "list", "sinks"], stdout=subprocess.PIPE)
out, err = p.communicate()
pattern = re.compile(': 0:\s*(\d*)%', re.MULTILINE)
strOutPut = str(out)
#print( "pactl says: ", strOutPut )
allVolumes = pattern.findall( strOutPut )
#print("all volumes : ", allVolumes)
pulseVolume = int(allVolumes[1])
if paramEQPluginInst.mainVolumePercentage != pulseVolume:
paramEQPluginInst.mainVolumePercentage = pulseVolume
print("main volume changed : ", pulseVolume)
paramEQPluginInst.volume_changed(None, None)


def do_activate(self):
self.shell = self.object
print("is RB3 :" + str( ParametricEQ_rb3compat.is_rb3() ) + ", " + str(ParametricEQ_rb3compat.PYVER))
Expand Down Expand Up @@ -174,7 +185,7 @@ def do_activate(self):
self.filterSet = False
#add volume changed callback
self.psc_id = self.player.connect('volume-changed', self.volume_changed)
ParametricEQPlugin.pulseVolumeCheckTimer(self)
#TODO: check for Pulse/Alsa somehow...
#ParametricEQPlugin.alsaVolumeCheckTimer(self)
self.stopFlag = threading.Event()
thread = PullVolumeThread(self.stopFlag, self)
thread.start()
print("do_activate done")

0 comments on commit 580e77d

Please sign in to comment.