Kaydet (Commit) 992ff06e authored tarafından Sjoerd Mullender's avatar Sjoerd Mullender

Made play method more robust by adding a try-finally.

üst 3d697ce4
...@@ -191,42 +191,52 @@ class Readcd: ...@@ -191,42 +191,52 @@ class Readcd:
if len(self.list) == 0: if len(self.list) == 0:
for i in range(self.status[5], self.status[6]+1): for i in range(self.status[5], self.status[6]+1):
self.appendtrack(i) self.appendtrack(i)
while 1: try:
if not self.playing: while 1:
if self.listindex >= len(self.list): if not self.playing:
return if self.listindex >= len(self.list):
start, end = self.list[self.listindex] return
## print 'starting with',`(start, end)` start, end = self.list[self.listindex]
if type(start) == type(0): if type(start) == type(0):
dummy = self.player.seektrack(start) dummy = self.player.seektrack(
else: start)
min, sec, frame = start
dummy = self.player.seek(min, sec, frame)
if type(end) == type(0):
self.parser.setcallback(CD.PNUM, _dopnum, self)
self.end = end
func, arg = self.callbacks[CD.ATIME]
if func:
self.parser.setcallback(CD.ATIME, func, arg)
else: else:
self.parser.removecallback(CD.ATIME) min, sec, frame = start
else: dummy = self.player.seek(
min, sec, frame = end min, sec, frame)
self.parser.setcallback(CD.ATIME, _doatime, self) if type(end) == type(0):
self.end = (min * 60 + sec) * 75 + frame self.parser.setcallback(
func, arg = self.callbacks[CD.PNUM] CD.PNUM, _dopnum, self)
if func: self.end = end
self.parser.setcallback(CD.PNUM, func, arg) func, arg = \
self.callbacks[CD.ATIME]
if func:
self.parser.setcallback(CD.ATIME, func, arg)
else:
self.parser.removecallback(CD.ATIME)
else: else:
self.parser.removecallback(CD.PNUM) min, sec, frame = end
self.playing = 1 self.parser.setcallback(
data = self.player.readda(size) CD.ATIME, _doatime,
if data == '': self)
self.playing = 0 self.end = (min * 60 + sec) * \
self.listindex = self.listindex + 1 75 + frame
continue func, arg = \
try: self.callbacks[CD.PNUM]
self.parser.parseframe(data) if func:
except _Stop: self.parser.setcallback(CD.PNUM, func, arg)
self.playing = 0 else:
self.listindex = self.listindex + 1 self.parser.removecallback(CD.PNUM)
self.playing = 1
data = self.player.readda(size)
if data == '':
self.playing = 0
self.listindex = self.listindex + 1
continue
try:
self.parser.parseframe(data)
except _Stop:
self.playing = 0
self.listindex = self.listindex + 1
finally:
self.playing = 0
...@@ -191,42 +191,52 @@ class Readcd: ...@@ -191,42 +191,52 @@ class Readcd:
if len(self.list) == 0: if len(self.list) == 0:
for i in range(self.status[5], self.status[6]+1): for i in range(self.status[5], self.status[6]+1):
self.appendtrack(i) self.appendtrack(i)
while 1: try:
if not self.playing: while 1:
if self.listindex >= len(self.list): if not self.playing:
return if self.listindex >= len(self.list):
start, end = self.list[self.listindex] return
## print 'starting with',`(start, end)` start, end = self.list[self.listindex]
if type(start) == type(0): if type(start) == type(0):
dummy = self.player.seektrack(start) dummy = self.player.seektrack(
else: start)
min, sec, frame = start
dummy = self.player.seek(min, sec, frame)
if type(end) == type(0):
self.parser.setcallback(CD.PNUM, _dopnum, self)
self.end = end
func, arg = self.callbacks[CD.ATIME]
if func:
self.parser.setcallback(CD.ATIME, func, arg)
else: else:
self.parser.removecallback(CD.ATIME) min, sec, frame = start
else: dummy = self.player.seek(
min, sec, frame = end min, sec, frame)
self.parser.setcallback(CD.ATIME, _doatime, self) if type(end) == type(0):
self.end = (min * 60 + sec) * 75 + frame self.parser.setcallback(
func, arg = self.callbacks[CD.PNUM] CD.PNUM, _dopnum, self)
if func: self.end = end
self.parser.setcallback(CD.PNUM, func, arg) func, arg = \
self.callbacks[CD.ATIME]
if func:
self.parser.setcallback(CD.ATIME, func, arg)
else:
self.parser.removecallback(CD.ATIME)
else: else:
self.parser.removecallback(CD.PNUM) min, sec, frame = end
self.playing = 1 self.parser.setcallback(
data = self.player.readda(size) CD.ATIME, _doatime,
if data == '': self)
self.playing = 0 self.end = (min * 60 + sec) * \
self.listindex = self.listindex + 1 75 + frame
continue func, arg = \
try: self.callbacks[CD.PNUM]
self.parser.parseframe(data) if func:
except _Stop: self.parser.setcallback(CD.PNUM, func, arg)
self.playing = 0 else:
self.listindex = self.listindex + 1 self.parser.removecallback(CD.PNUM)
self.playing = 1
data = self.player.readda(size)
if data == '':
self.playing = 0
self.listindex = self.listindex + 1
continue
try:
self.parser.parseframe(data)
except _Stop:
self.playing = 0
self.listindex = self.listindex + 1
finally:
self.playing = 0
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