mirror of
https://github.com/curioustorvald/tsvm.git
synced 2026-06-09 06:34:04 +09:00
decodemov: fixed a bug where the frame read occasionally hangs at the end of the playback
This commit is contained in:
@@ -151,10 +151,10 @@ let fb2 = sys.malloc(FBUF_SIZE)
|
|||||||
let startTime = sys.nanoTime()
|
let startTime = sys.nanoTime()
|
||||||
|
|
||||||
let decodefun = (type > 255) ? graphics.decodeIpf2 : graphics.decodeIpf1
|
let decodefun = (type > 255) ? graphics.decodeIpf2 : graphics.decodeIpf1
|
||||||
|
let framesRead = 0
|
||||||
|
let breakReadLoop = false
|
||||||
|
|
||||||
while (framesRendered < frameCount) {
|
while (framesRendered < frameCount && !breakReadLoop) {
|
||||||
// serial.println(`Frame #${framesRendered+1}`)
|
|
||||||
|
|
||||||
let t1 = sys.nanoTime()
|
let t1 = sys.nanoTime()
|
||||||
|
|
||||||
if (akku >= frameTime) {
|
if (akku >= frameTime) {
|
||||||
@@ -169,6 +169,13 @@ while (framesRendered < frameCount) {
|
|||||||
// skip frames if necessary
|
// skip frames if necessary
|
||||||
while (frameUnit >= 1) {
|
while (frameUnit >= 1) {
|
||||||
let payloadLen = readInt()
|
let payloadLen = readInt()
|
||||||
|
|
||||||
|
if (framesRead >= frameCount) {
|
||||||
|
breakReadLoop = true
|
||||||
|
break
|
||||||
|
}
|
||||||
|
|
||||||
|
framesRead += 1
|
||||||
let gzippedPtr = readBytes(payloadLen)
|
let gzippedPtr = readBytes(payloadLen)
|
||||||
framesRendered += 1
|
framesRendered += 1
|
||||||
|
|
||||||
|
|||||||
@@ -455,6 +455,7 @@ shell.execute = function(line) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
shell.pipes = {}; // syntax: _G.shell.pipes[name] = contents; all pipes are named pipes just like in Windows
|
||||||
Object.freeze(shell);
|
Object.freeze(shell);
|
||||||
_G.shell = shell;
|
_G.shell = shell;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user