Mercurial > vixm
diff vixm/player.py @ 40:06b5a7db3d19 pure
Some cleanup, got to next song implemented
author | Josef "Jeff" Sipek <jeffpc@josefsipek.net> |
---|---|
date | Sat, 04 Nov 2006 23:11:49 -0500 |
parents | 87aa31e41f4a |
children | bc6db55448e1 |
line wrap: on
line diff
--- a/vixm/player.py Sat Nov 04 17:57:38 2006 -0500 +++ b/vixm/player.py Sat Nov 04 23:11:49 2006 -0500 @@ -3,19 +3,38 @@ import mad, ao +import playlist + class playerThread(Thread): def __init__(self): Thread.__init__(self) self.shutdown = False self.playing = False + self.end_current = False self.current = None self.blksize = 40960 self.dev = ao.AudioDevice("oss") + def play_next(self, lists): + try: + # pop song off the PRIO queue + s = lists[playlist.LIST_PRIO].pop() + except IndexError: + # no song to pop + s = lists[playlist.LIST_DEFAULT].next() + except ValueError: + print "WTF is going on?!" + raise ValueError + + self.play(s) + def play(self, s): + if self.playing: + self.end_current = True + self.playing = True self.current = s @@ -27,10 +46,16 @@ while True: buf = mf.read(self.blksize) - if buf is None or self.shutdown: + if buf is None or \ + self.shutdown or \ + self.end_current: break self.dev.play(buf, len(buf)) - self.playing = False + + if self.end_current: + self.end_current = False + else: + self.playing = False else: # nothing to play, just sleep time.sleep(0.5)