Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 992ff06

Browse files
Made play method more robust by adding a try-finally.
1 parent 3d697ce commit 992ff06

2 files changed

Lines changed: 94 additions & 74 deletions

File tree

Lib/irix5/readcd.py

Lines changed: 47 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -191,42 +191,52 @@ def play(self):
191191
if len(self.list) == 0:
192192
for i in range(self.status[5], self.status[6]+1):
193193
self.appendtrack(i)
194-
while 1:
195-
if not self.playing:
196-
if self.listindex >= len(self.list):
197-
return
198-
start, end = self.list[self.listindex]
199-
## print 'starting with',`(start, end)`
200-
if type(start) == type(0):
201-
dummy = self.player.seektrack(start)
202-
else:
203-
min, sec, frame = start
204-
dummy = self.player.seek(min, sec, frame)
205-
if type(end) == type(0):
206-
self.parser.setcallback(CD.PNUM, _dopnum, self)
207-
self.end = end
208-
func, arg = self.callbacks[CD.ATIME]
209-
if func:
210-
self.parser.setcallback(CD.ATIME, func, arg)
194+
try:
195+
while 1:
196+
if not self.playing:
197+
if self.listindex >= len(self.list):
198+
return
199+
start, end = self.list[self.listindex]
200+
if type(start) == type(0):
201+
dummy = self.player.seektrack(
202+
start)
211203
else:
212-
self.parser.removecallback(CD.ATIME)
213-
else:
214-
min, sec, frame = end
215-
self.parser.setcallback(CD.ATIME, _doatime, self)
216-
self.end = (min * 60 + sec) * 75 + frame
217-
func, arg = self.callbacks[CD.PNUM]
218-
if func:
219-
self.parser.setcallback(CD.PNUM, func, arg)
204+
min, sec, frame = start
205+
dummy = self.player.seek(
206+
min, sec, frame)
207+
if type(end) == type(0):
208+
self.parser.setcallback(
209+
CD.PNUM, _dopnum, self)
210+
self.end = end
211+
func, arg = \
212+
self.callbacks[CD.ATIME]
213+
if func:
214+
self.parser.setcallback(CD.ATIME, func, arg)
215+
else:
216+
self.parser.removecallback(CD.ATIME)
220217
else:
221-
self.parser.removecallback(CD.PNUM)
222-
self.playing = 1
223-
data = self.player.readda(size)
224-
if data == '':
225-
self.playing = 0
226-
self.listindex = self.listindex + 1
227-
continue
228-
try:
229-
self.parser.parseframe(data)
230-
except _Stop:
231-
self.playing = 0
232-
self.listindex = self.listindex + 1
218+
min, sec, frame = end
219+
self.parser.setcallback(
220+
CD.ATIME, _doatime,
221+
self)
222+
self.end = (min * 60 + sec) * \
223+
75 + frame
224+
func, arg = \
225+
self.callbacks[CD.PNUM]
226+
if func:
227+
self.parser.setcallback(CD.PNUM, func, arg)
228+
else:
229+
self.parser.removecallback(CD.PNUM)
230+
self.playing = 1
231+
data = self.player.readda(size)
232+
if data == '':
233+
self.playing = 0
234+
self.listindex = self.listindex + 1
235+
continue
236+
try:
237+
self.parser.parseframe(data)
238+
except _Stop:
239+
self.playing = 0
240+
self.listindex = self.listindex + 1
241+
finally:
242+
self.playing = 0

Lib/plat-irix5/readcd.py

Lines changed: 47 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -191,42 +191,52 @@ def play(self):
191191
if len(self.list) == 0:
192192
for i in range(self.status[5], self.status[6]+1):
193193
self.appendtrack(i)
194-
while 1:
195-
if not self.playing:
196-
if self.listindex >= len(self.list):
197-
return
198-
start, end = self.list[self.listindex]
199-
## print 'starting with',`(start, end)`
200-
if type(start) == type(0):
201-
dummy = self.player.seektrack(start)
202-
else:
203-
min, sec, frame = start
204-
dummy = self.player.seek(min, sec, frame)
205-
if type(end) == type(0):
206-
self.parser.setcallback(CD.PNUM, _dopnum, self)
207-
self.end = end
208-
func, arg = self.callbacks[CD.ATIME]
209-
if func:
210-
self.parser.setcallback(CD.ATIME, func, arg)
194+
try:
195+
while 1:
196+
if not self.playing:
197+
if self.listindex >= len(self.list):
198+
return
199+
start, end = self.list[self.listindex]
200+
if type(start) == type(0):
201+
dummy = self.player.seektrack(
202+
start)
211203
else:
212-
self.parser.removecallback(CD.ATIME)
213-
else:
214-
min, sec, frame = end
215-
self.parser.setcallback(CD.ATIME, _doatime, self)
216-
self.end = (min * 60 + sec) * 75 + frame
217-
func, arg = self.callbacks[CD.PNUM]
218-
if func:
219-
self.parser.setcallback(CD.PNUM, func, arg)
204+
min, sec, frame = start
205+
dummy = self.player.seek(
206+
min, sec, frame)
207+
if type(end) == type(0):
208+
self.parser.setcallback(
209+
CD.PNUM, _dopnum, self)
210+
self.end = end
211+
func, arg = \
212+
self.callbacks[CD.ATIME]
213+
if func:
214+
self.parser.setcallback(CD.ATIME, func, arg)
215+
else:
216+
self.parser.removecallback(CD.ATIME)
220217
else:
221-
self.parser.removecallback(CD.PNUM)
222-
self.playing = 1
223-
data = self.player.readda(size)
224-
if data == '':
225-
self.playing = 0
226-
self.listindex = self.listindex + 1
227-
continue
228-
try:
229-
self.parser.parseframe(data)
230-
except _Stop:
231-
self.playing = 0
232-
self.listindex = self.listindex + 1
218+
min, sec, frame = end
219+
self.parser.setcallback(
220+
CD.ATIME, _doatime,
221+
self)
222+
self.end = (min * 60 + sec) * \
223+
75 + frame
224+
func, arg = \
225+
self.callbacks[CD.PNUM]
226+
if func:
227+
self.parser.setcallback(CD.PNUM, func, arg)
228+
else:
229+
self.parser.removecallback(CD.PNUM)
230+
self.playing = 1
231+
data = self.player.readda(size)
232+
if data == '':
233+
self.playing = 0
234+
self.listindex = self.listindex + 1
235+
continue
236+
try:
237+
self.parser.parseframe(data)
238+
except _Stop:
239+
self.playing = 0
240+
self.listindex = self.listindex + 1
241+
finally:
242+
self.playing = 0

0 commit comments

Comments
 (0)