def __playsome(self): self.__tid = None port = self.__port while 1: if not self.__data: port.wait() self.__merger = None self.__converter = None self.__call() return self.__write() self.__call() self.__read() if not self.__data: timeout = float(port.getfilled()) / self.__framerate - 0.1 if timeout > 0: self.__tid = windowinterface.settimer( timeout, (self.__playsome, ())) return # else we go back into the loop to stop # playing immediately else: timeout = float(port.getfilled() / 2) / self.__framerate self.__tid = windowinterface.settimer(timeout, (self.__playsome, ())) return
def freezeit(self): if self.__rmaplayer: if realenginedebug: print 'RealChannel.freezeit', self if self.__qid: self.__channel._scheduler.cancel(self.__qid) self.__qid = 0 try: self.__rmaplayer.Pause() except rma.error, arg: windowinterface.settimer( 0.1, (self.__channel.errormsg, (None, 'RealPlayer error: %s.' % arg)))
def pauseit(self, paused): if self.__rmaplayer: if realenginedebug: print 'RealChannel.pauseit', self, paused try: if paused: self.__rmaplayer.Pause() else: self.__rmaplayer.Begin() except rma.error, arg: windowinterface.settimer( 0.1, (self.__channel.errormsg, (None, 'RealPlayer error: %s.' % arg)))
def __okchannel(self, ok=0): if ok: name = self.__chantext.gettext() type = self.__chantype.getvalue() else: name = type = None self.__chanwin.close() del self.__chantext del self.__chantype del self.__chanwin # We can't call this directly since we're still in # grab mode. We must first return from this callback # before we're out of that mode, so we must schedule a # callback in the very near future. windowinterface.settimer(0.00001, (self.newchannel_callback, (name, type)))
def Blt(self, data): if self.__rmdds and self.__rmrender: blt, w, h = self.__rmrender try: blt(data, w, h) except ddraw.error, arg: print arg return if not self.__blttimerid: self.__blttimerid = windowinterface.settimer( 0.01, (self.bltUpdate, ()))
def set_timer(self, delay, arg): if self._last_timer_id is not None: windowinterface.canceltimer(self._last_timer_id) self._last_timer_id = None self.__immediate = 0 if delay >= 0: if delay <= 0.01 and self.__intimer: self.__immediate = 1 else: self._last_timer_id = windowinterface.settimer( delay, (self.timer_callback, (arg, )))
def ErrorOccurred(self, str): if realenginedebug: print 'RealChannel.ErrorOccurred', self windowinterface.settimer(0.1, (self.__channel.errormsg, (None, 'RealPlayer error: %s.' % str)))
def OnPostSeek(self, oldTime, newTime): if self.__spark: windowinterface.settimer(0.1, (self.__rmaplayer.Begin, ())) self.__spark = 0
return 1 def OnPresentationOpened(self): if not self.__spark: return node = self._playargs[0] t0 = self.__channel._scheduler.timefunc() if t0 > self._playargs[5] and not settings.get('noskip'): if not __debug__: print 'RealChannel: skipping', node.get_start_time( ), t0, t0 - node.start_time try: self.__rmaplayer.Seek(int((t0 - node.get_start_time()) * 1000)) except rma.error, arg: print arg else: windowinterface.settimer(0.1, (self.__rmaplayer.Begin, ())) self.__spark = 0 def OnPostSeek(self, oldTime, newTime): if self.__spark: windowinterface.settimer(0.1, (self.__rmaplayer.Begin, ())) self.__spark = 0 def OnPosLength(self, posmsec, durmsec): self.__reporteddur = 0.001 * durmsec def replay(self): if not self._playargs: return node, window, winpossize, url, windowless, start_time = self._playargs temp = self.__rmaplayer
def __register_for_timeslices(self): if self.__fiber_id is None: self.__fiber_id = windowinterface.settimer(0.1, (self.onIdle, ()))
def __register_for_timeslices(self): if self.__fiber_id is None: if USE_IDLE_PROC: self.__fiber_id = windowinterface.setidleproc(self.__onIdle) else: self.__fiber_id = windowinterface.settimer(0.05, (self.__onIdle,()))