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,30 +191,38 @@ class Readcd: ...@@ -191,30 +191,38 @@ 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)
try:
while 1: while 1:
if not self.playing: if not self.playing:
if self.listindex >= len(self.list): if self.listindex >= len(self.list):
return return
start, end = self.list[self.listindex] start, end = self.list[self.listindex]
## print 'starting with',`(start, end)`
if type(start) == type(0): if type(start) == type(0):
dummy = self.player.seektrack(start) dummy = self.player.seektrack(
start)
else: else:
min, sec, frame = start min, sec, frame = start
dummy = self.player.seek(min, sec, frame) dummy = self.player.seek(
min, sec, frame)
if type(end) == type(0): if type(end) == type(0):
self.parser.setcallback(CD.PNUM, _dopnum, self) self.parser.setcallback(
CD.PNUM, _dopnum, self)
self.end = end self.end = end
func, arg = self.callbacks[CD.ATIME] func, arg = \
self.callbacks[CD.ATIME]
if func: if func:
self.parser.setcallback(CD.ATIME, func, arg) self.parser.setcallback(CD.ATIME, func, arg)
else: else:
self.parser.removecallback(CD.ATIME) self.parser.removecallback(CD.ATIME)
else: else:
min, sec, frame = end min, sec, frame = end
self.parser.setcallback(CD.ATIME, _doatime, self) self.parser.setcallback(
self.end = (min * 60 + sec) * 75 + frame CD.ATIME, _doatime,
func, arg = self.callbacks[CD.PNUM] self)
self.end = (min * 60 + sec) * \
75 + frame
func, arg = \
self.callbacks[CD.PNUM]
if func: if func:
self.parser.setcallback(CD.PNUM, func, arg) self.parser.setcallback(CD.PNUM, func, arg)
else: else:
...@@ -230,3 +238,5 @@ class Readcd: ...@@ -230,3 +238,5 @@ class Readcd:
except _Stop: except _Stop:
self.playing = 0 self.playing = 0
self.listindex = self.listindex + 1 self.listindex = self.listindex + 1
finally:
self.playing = 0
...@@ -191,30 +191,38 @@ class Readcd: ...@@ -191,30 +191,38 @@ 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)
try:
while 1: while 1:
if not self.playing: if not self.playing:
if self.listindex >= len(self.list): if self.listindex >= len(self.list):
return return
start, end = self.list[self.listindex] start, end = self.list[self.listindex]
## print 'starting with',`(start, end)`
if type(start) == type(0): if type(start) == type(0):
dummy = self.player.seektrack(start) dummy = self.player.seektrack(
start)
else: else:
min, sec, frame = start min, sec, frame = start
dummy = self.player.seek(min, sec, frame) dummy = self.player.seek(
min, sec, frame)
if type(end) == type(0): if type(end) == type(0):
self.parser.setcallback(CD.PNUM, _dopnum, self) self.parser.setcallback(
CD.PNUM, _dopnum, self)
self.end = end self.end = end
func, arg = self.callbacks[CD.ATIME] func, arg = \
self.callbacks[CD.ATIME]
if func: if func:
self.parser.setcallback(CD.ATIME, func, arg) self.parser.setcallback(CD.ATIME, func, arg)
else: else:
self.parser.removecallback(CD.ATIME) self.parser.removecallback(CD.ATIME)
else: else:
min, sec, frame = end min, sec, frame = end
self.parser.setcallback(CD.ATIME, _doatime, self) self.parser.setcallback(
self.end = (min * 60 + sec) * 75 + frame CD.ATIME, _doatime,
func, arg = self.callbacks[CD.PNUM] self)
self.end = (min * 60 + sec) * \
75 + frame
func, arg = \
self.callbacks[CD.PNUM]
if func: if func:
self.parser.setcallback(CD.PNUM, func, arg) self.parser.setcallback(CD.PNUM, func, arg)
else: else:
...@@ -230,3 +238,5 @@ class Readcd: ...@@ -230,3 +238,5 @@ class Readcd:
except _Stop: except _Stop:
self.playing = 0 self.playing = 0
self.listindex = self.listindex + 1 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