mirror of
https://github.com/xiaoqidun/ofdgo.git
synced 2026-10-30 01:27:26 +08:00
This commit is contained in:
1 parent
ce9de329d9
commit
f3577afd22
1 file changed
+1
-20
+1
-20
@@ -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,21 +1555,12 @@ async function processPageRenderQueue() {
|
||||
} catch (err) {
|
||||
task.reject(err);
|
||||
} finally {
|
||||
if (!delayed) {
|
||||
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) {
|
||||
|
||||
Reference in new issue
Block a user