*** These modified files were found in JOE when it aborted on Fri Sep 23 20:31:28 2016 *** JOE was aborted because the terminal closed *** Файл '(БезИмени)' mqtt_pulse.py *** Файл 'mqtt_pulse.py' #!/usr/bin/python from pulsectl import Pulse,PulseLoopStop import threading sink_name=None muted=False volume=None paLock1=threading.RLock() paLock2=threading.RLock() stopFlag=False def Init(): global pulse pulse = Pulse("mqtt-pa") def Reconnect(): pulse.close() Init() def GetDefaultOut(): return pulse.server_info().default_sink_name def GetDefaultSink(): sinkname=GetDefaultOut() for sink in pulse.sink_list(): if sink.name==sinkname: return sink def GetDefaultVolume(): return pulse.volume_get_all_chans(GetDefaultSink()) def IsDefaultMuted(): return GetDefaultSink().mute<>0 def MuteDefault(mute = True): return pulse.mute(GetDefaultSink(),mute) def EventListener(callback): pulse.event_mask_set('all') pulse.event_callback_set(callback) pulse.event_listen() def EventProcess(ev): raise PulseLoopStop def AcquirePALock(): paLock1.acquire() pulse.event_listen_stop() paLock2.acquire() def ReleasePALock(): paLock2.release() paLock1.release() def StateProcess(): global sink_name,muted,volume try: tname=threading.current_thread().name # print tname+">trying to aquire lock" AcquirePALock() # print tname+">lock aquired" current_sink=GetDefaultOut() current_vol=round(GetDefaultVolume(),2) current_muted=IsDefaultMuted() if current_sink<>sink_name: sink_name=current_sink print tname+">sink: "+sink_name if current_vol<>volume: volume=current_vol print tname+">volume: "+str(volume) if current_muted<>muted: muted=current_muted print tname+">muted: "+str(muted) finally: ReleasePALock() # print tname+">lock released" def PAListener(): while not stopFlag: # print "entering wait loop" EventListener(EventProcess) # print "event or break happened" StateProcess() def RunBackground(process): stopFlag=False thread = threading.Thread(target=process,name="Background") thread.start() def StopBackground(): global stopFlag stopFlag=True pulse.event_listen_stop() def CommandGetDefaultOut(): try: tname=threading.current_thread().name # print tname+">trying to aquire lock" AcquirePALock() # print tname+">lock aquired" result=GetDefaultOut() finally: ReleasePALock() # print tname+">lock released" return result def CommandGetDefaultVolume(): try: tname=threading.current_thread().name # print tname+">trying to aquire lock" AcquirePALock() # print tname+">lock aquired" result=GetDefaultVolume() finally: ReleasePALock() # print tname+">lock released" return result def CommandIsDefaultMuted(): try: tname=threading.current_thread().name # print tname+">trying to aquire lock" AcquirePALock() # print tname+">lock aquired" result=IsDefaultMuted() finally: ReleasePALock() # print tname+">lock released" return result *** Файл '* Startup Log *' Processing '/etc/joe/joerc'... Processing '/etc/joe/ftyperc'... Finished processing /etc/joe/ftyperc Finished processing /etc/joe/joerc