def __init__(self, path): self.path = path arc_path, res_path = parsePath(path) core.logdebug("RW", arc_path, res_path) if arc_path: self.data = getArchiveData(arc_path, res_path) self.obj = SDL_RWFromConstMem(self.data, len(self.data)) else: self.data = None self.obj = SDL_RWFromFile(res_path, "rb") if not self.obj: core.raisesdlerr()
def play(self, loop=False, index=0): if self.playing: core.logdebug("animation play canceled: playing") return index = int(index) if index < 0 or index >= self.length: raise IndexError("index %s not in [0..length], %s"%(index, widget)) self.index = index self.loop = bool(loop) self.playing = True self._needDraw = True self.lastTime = time.time()
def play(self, loop=False, index=0): if self.playing: core.logdebug("animation play canceled: playing") return index = int(index) if index < 0 or index >= self.length: raise IndexError("index %s not in [0..length], %s" % (index, widget)) self.index = index self.loop = bool(loop) self.playing = True self._needDraw = True self.lastTime = time.time()
def play(path, volume=100): #why not split load and play: smpeg need keep audio device open by itself ... global info, mpeg, mpeg_rw if playing(): core.logdebug("movie play canceled: movie playing") return music.closeAudio() #stop() info = SMPEG_Info() try: mpeg_rw = rw.RW(path) except core.SDLException, e: core.logdebug("movie load error:", e) stop() return
def play(path, volume=100): # why not split load and play: smpeg need keep audio device open by itself ... global info, mpeg, mpeg_rw if playing(): core.logdebug("movie play canceled: movie playing") return music.closeAudio() # stop() info = SMPEG_Info() try: mpeg_rw = rw.RW(path) except core.SDLException, e: core.logdebug("movie load error:", e) stop() return
def play(self, loop): """loop -1: infinite, 0: once""" if not self.music: core.logdebug("play canceled: not self.music", self) return if self.playing(): core.logdebug("play canceled: playing", self) return if movie.playing(): core.logdebug("play canceled: movie playing", self) return openAudio() if Mix_PlayMusic(self.music.data, loop) < 0: core.logsdlerr(self) return
def play(self, loop): """loop -1: infinite, 0: once""" if not self.chunk: #may be None or NULL pointer core.logdebug("play canceled: not self.chunk", self) return if self.playing(): core.logdebug("play canceled: playing", self) return if movie.playing(): core.logdebug("play canceled: movie playing", self) return openAudio() if Mix_PlayChannel(self.channel, self.chunk.data, loop) < 0: core.logsdlerr(self) return
def play(self, loop): """loop -1: infinite, 0: once""" if not self.chunk: # may be None or NULL pointer core.logdebug("play canceled: not self.chunk", self) return if self.playing(): core.logdebug("play canceled: playing", self) return if movie.playing(): core.logdebug("play canceled: movie playing", self) return openAudio() if Mix_PlayChannel(self.channel, self.chunk.data, loop) < 0: core.logsdlerr(self) return
def __del__(self): """replace Widget.__del__ won't call SDL_FreeSurface master reference count -= 1 """ core.logdebug("del widget without SDL_FreeSurface", self)
def __del__(self): core.logdebug("del widget", self) SDL_FreeSurface(self.surface)
def __del__(self): core.logdebug("del rw", self) #corrupted double-linked list if set freesrc to 1 in loadXXX_RW #SDL_FreeRW(self.obj)
def __del__(self): core.logdebug("del chunk", self) Mix_FreeChunk(self.data)
def __del__(self): core.logdebug("del music", self) Mix_FreeMusic(self.data)
# why not split load and play: smpeg need keep audio device open by itself ... global info, mpeg, mpeg_rw if playing(): core.logdebug("movie play canceled: movie playing") return music.closeAudio() # stop() info = SMPEG_Info() try: mpeg_rw = rw.RW(path) except core.SDLException, e: core.logdebug("movie load error:", e) stop() return mpeg = SMPEG_new_rwops(mpeg_rw.obj, byref(info), 1) error = SMPEG_error(mpeg) if error: core.logdebug("movie play error:", error) stop() return SMPEG_enableaudio(mpeg, 1) SMPEG_enablevideo(mpeg, 1) SMPEG_setvolume(mpeg, volume) SMPEG_setdisplay(mpeg, core.screen, None, SMPEG_DisplayCallback()) SMPEG_move(mpeg, 0, 0) SMPEG_scaleXY(mpeg, core.screen.contents.w, core.screen.contents.h) SMPEG_play(mpeg) # event queue will broken if stop before play start time.sleep(playDelay) core.clearEvent()
#why not split load and play: smpeg need keep audio device open by itself ... global info, mpeg, mpeg_rw if playing(): core.logdebug("movie play canceled: movie playing") return music.closeAudio() #stop() info = SMPEG_Info() try: mpeg_rw = rw.RW(path) except core.SDLException, e: core.logdebug("movie load error:", e) stop() return mpeg = SMPEG_new_rwops(mpeg_rw.obj, byref(info), 1) error = SMPEG_error(mpeg) if error: core.logdebug("movie play error:", error) stop() return SMPEG_enableaudio(mpeg, 1) SMPEG_enablevideo(mpeg, 1) SMPEG_setvolume(mpeg, volume) SMPEG_setdisplay(mpeg, core.screen, None, SMPEG_DisplayCallback()) SMPEG_move(mpeg, 0, 0) SMPEG_scaleXY(mpeg, core.screen.contents.w, core.screen.contents.h) SMPEG_play(mpeg) #event queue will broken if stop before play start time.sleep(playDelay) core.clearEvent()