import threading import Queue import signal import player import track import sys import pygst pygst.require('0.10') import gst import os class gstPlayer(player.Player): def run(self): self.pid=os.fork() if (self.pid == 0): uri='file://' + self.track.getFileName() print>>sys.stderr, "playing: ",self.track.getTrackId(),uri pipeline = gst.Pipeline("player") source = gst.element_factory_make('playbin') source.set_property('uri', uri) pipeline.add(source) pipeline.set_state(gst.STATE_PLAYING) #Wait for an end. bus = pipeline.get_bus() while 1: msg = bus.poll(gst.MESSAGE_EOS | gst.MESSAGE_ERROR, gst.SECOND) if msg: break os._exit(0) else: os.waitpid(self.pid,0) self.pid=None self.location.commandQueue.put("playnexttrack")