Kaydet (Commit) 772d6967 authored tarafından Barry Warsaw's avatar Barry Warsaw

__update(): Jeremy Hylton reports occurances of sunaudiodev.error

(interrupted system call) when getting the device information.  I've
never seen it, but this patch should take care of the problem.

If we get that exception and we're polling, just return since we'll
wake up again soon and get the right information.  If we're not
polling, try 4 times and then give up.
üst 959fa01d
......@@ -54,7 +54,7 @@ from SUNAUDIODEV import *
# Milliseconds between interrupt checks
KEEPALIVE_TIMER = 500
__version__ = '1.0'
__version__ = '1.1'
......@@ -278,10 +278,19 @@ Email: bwarsaw@python.org''' % __version__)
self.__update()
def __update(self, num=None, frame=None):
# We have to poll because the device could have changed state and the
# underlying module does not support the SIGPOLL notification
# interface.
info = self.__devctl.getinfo()
# It's possible (although I have never seen it) to get an interrupted
# system call during the getinfo() call. If so, and we're polling,
# don't sweat it because we'll come around again later. Otherwise,
# we'll give it a couple of tries and then give up until next time.
tries = 0
while 1:
try:
info = self.__devctl.getinfo()
break
except sunaudiodev.error:
if self.__needtopoll or tries > 3:
return
tries = tries + 1
# input
self.__inputvar.set(info.i_port)
# output
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment