view vixm/ @ 40:06b5a7db3d19 pure

Some cleanup, got to next song implemented
author Josef "Jeff" Sipek <>
date Sat, 04 Nov 2006 23:11:49 -0500
parents 87aa31e41f4a
children bc6db55448e1
line wrap: on
line source

import time
from threading import Thread

import mad, ao

import playlist

class playerThread(Thread):
	def __init__(self):

		self.shutdown = False
		self.playing  = False
		self.end_current = False

		self.current  = None

		self.blksize  = 40960      = ao.AudioDevice("oss")

	def play_next(self, lists):
			# 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

	def play(self, s):
		if self.playing:
			self.end_current = True

		self.playing = True
		self.current = s

	def run(self):
		while not self.shutdown:
			if self.current and self.playing:
				# play the file
				mf = mad.MadFile(self.current["file"])
				while True:
					buf =
					if buf is None or \
					   self.shutdown or \
						break, len(buf))

				if self.end_current:
					self.end_current = False
					self.playing = False
				# nothing to play, just sleep