def _register_io_handlers(self):
flags_err = gobject.IO_ERR | gobject.IO_HUP
def handler(fd, flags):
if flags & flags_err:
return False
else:
while self.playing:
line = self._readline()
if not line:
return True
elif line[:2] == "A:" and line[-1] =="\r":
pieces = line.split()
pos = float(pieces[1])
self.emit("pos", pos)
return True
elif line == "Exiting... (Quit)\n":
self.proc.wait()
self.proc = None
self.emit("eos")
self.emit("state-changed", PlayerEngine.STATE_NONE)
return False
elif line == "Starting playback...\n":
# make buffer empty
while line:
line = self._readline(100)
if line and line[:2] == "A:" and line[-1] == "\r":
break
self.set_volume(self.volume)
self.set_mute(self.mute)
self.set_fullscreen(self.fullscreen)
self._query_media_info()
self._register_state_timeout()
self.emit("state-changed", PlayerEngine.STATE_PLAYING)
return True
else:
self.log.debug("Ignored MPlayer output: %r" % line)
return True
flags = gobject.IO_IN | gobject.IO_PRI | flags_err
self.out_watcher = gobject.io_add_watch(self.proc.stdout,
flags, handler)
# _register_io_handlers()
评论列表
文章目录