0
python 2.7 및 pyalsaaudio 0.7을 사용하여 내 필요에 맞는 작은 사용자 지정 믹서를 만들려고합니다.하지만 다른 프로그램에서 볼륨 값을 변경하면 alsamixer에서 가져온 이벤트가 붙어 있습니다. 다른 믹서의 작동 방식을 이해하려고 시도했는데 (예 : volti) 이해한다면 이해할 수있을만큼 예상대로 작동해야하지만 방법이 비슷하더라도 io_add_watch에서 이벤트 응답의 연속 루프가 계속 발생합니다. 그래서, 나는 io_add_watch가 어떻게 작동하는지 이해하지 못한다고 생각합니다.gobject.io_add_watch 연속 콜백 pyalsaaudio
이 코드의 작은 버전입니다 :
class MyMixer(gtk.Window):
def __init__(self):
super(MyMixer, self).__init__()
self.m = alsaaudio.Mixer(control='Headphone', id=1, cardindex=0)
""" here go the mixer widgets """
self.show_all()
fd, event = self.m.polldescriptors()[0]
self.watch = gobject.io_add_watch(fd, event, self.update)
def update(self, *args):
print 'changed'
""" here I update mixer widgets """
return True
mixer = MyMixer()
gtk.main()
내가 잘못 무엇입니까 무엇입니까?
나는이 문제에 대해 제출 된 패치를 발견했는데, 정확하게 이해한다면, 내 문제가 아닌 특정 이벤트를 처리 할 수있게되었습니다. 내 문제는 믹서의 값을 변경 한 후에도 지속적인 이벤트가 발생하고 그것을 "멈추는"방법을 모른다. 저는 여전히 파이썬 초보자입니다. 그렇기 때문에 폴링이 어떻게 작동하는지 실제로 이해하지 못했을 것입니다. – musicamante
이벤트가 처리되지 않기 때문에 계속 이벤트가 발생합니다. –
좋아, 그 패치로 고칠 수 있다면 고마워. – musicamante