diff --git a/assets/webui/ofdgo.js b/assets/webui/ofdgo.js index bcc67b3..ed79501 100644 --- a/assets/webui/ofdgo.js +++ b/assets/webui/ofdgo.js @@ -1533,10 +1533,10 @@ function schedulePageRender() { async function processPageRenderQueue() { try { + await nextFrame(); while (state.pageRenderQueue.length) { state.pageRenderQueue.sort(comparePageRenderTask); const task = state.pageRenderQueue.shift(); - let delayed = false; try { if (task.openSeq !== state.openSeq) { task.resolve(null); @@ -1546,16 +1546,6 @@ async function processPageRenderQueue() { task.resolve(state.pageCache.get(task.index)); continue; } - await nextFrame(); - if (task.openSeq !== state.openSeq) { - task.resolve(null); - continue; - } - if (shouldDelayPageTask(task)) { - state.pageRenderQueue.push(task); - delayed = true; - continue; - } const page = await callWASM("ofdgoRenderPage", task.index); if (task.openSeq === state.openSeq) { state.pageCache.set(task.index, page); @@ -1565,23 +1555,14 @@ async function processPageRenderQueue() { } catch (err) { task.reject(err); } finally { - if (!delayed) { - state.pageInFlight.delete(task.key); - } + state.pageInFlight.delete(task.key); } } } finally { state.pageRenderRunning = false; - if (state.pageRenderQueue.length) { - schedulePageRender(); - } } } -function shouldDelayPageTask(task) { - return state.pageRenderQueue.some((next) => next.openSeq === state.openSeq && comparePageRenderTask(next, task) < 0); -} - function comparePageRenderTask(a, b) { return a.priority - b.priority || Math.abs(a.index - state.pageIndex) - Math.abs(b.index - state.pageIndex); }