while(self.keep_alive): while(self.client.is_playing()): if change_data: self._change_data() change_data = False buf = self.current_file.read(4096*4) if len(buf) == 0: self.client.log("Done sending '%s'" \ % self.current_track) change_data = True continue try: self._server.send(buf) self._server.sync() #THIS CAUSES THE EXAILE INTERFACE TO HANG except shout.ShoutException: self.disconnect() self.client.stop() # THIS WORKS! BUT IS NOT ACCURATE (we need sync() here!) # delay = self._server.delay()/1000.0 # if delay > 0: time.sleep(delay)