ogg.player responsiveness fixes

db4
Slava Pestov 2008-02-25 06:32:25 -06:00
parent d19fd8e111
commit 20bbb4b5ae
1 changed files with 4 additions and 5 deletions

View File

@ -14,7 +14,7 @@ USING: kernel alien ogg ogg.vorbis ogg.theora io byte-arrays
sequences libc shuffle alien.c-types system openal math
namespaces threads shuffle opengl arrays ui.gadgets.worlds
combinators math.parser ui.gadgets ui.render opengl.gl ui
continuations io.files hints combinators.lib sequences.lib ;
continuations io.files hints combinators.lib sequences.lib debugger ;
IN: ogg.player
@ -149,7 +149,7 @@ HINTS: yuv>rgb byte-array byte-array ;
dup player-gadget [
dup { player-td player-yuv } get-slots theora_decode_YUVout drop
dup player-rgb over player-yuv yuv>rgb
dup player-gadget find-world draw-world
dup player-gadget relayout yield
] when ;
: num-audio-buffers-processed ( player -- player n )
@ -177,7 +177,7 @@ HINTS: yuv>rgb byte-array byte-array ;
: append-audio ( player -- player bool )
num-audio-buffers-processed {
{ [ over player-buffers length 1 = over zero? and ] [ drop append-new-audio-buffer t ] }
{ [ over player-buffers length 2 = over zero? and ] [ 0 sleep drop f ] }
{ [ over player-buffers length 2 = over zero? and ] [ yield drop f ] }
{ [ t ] [ fill-processed-audio-buffer t ] }
} cond ;
@ -602,8 +602,7 @@ M: theora-gadget draw-gadget* ( gadget -- )
parse-remaining-headers
initialize-decoder
dup player-gadget [ initialize-gui ] when*
[ decode ] [ drop ] recover
! decode
[ decode ] try
wait-for-sound
cleanup
drop ;