Fix WebGL page cache and flip sequencing
This commit is contained in:
@@ -165,7 +165,7 @@ class SentenceQueueModule extends BaseModule {
|
||||
if (!this.isProcessing) {
|
||||
this.processNextSentence();
|
||||
} else {
|
||||
this.prefetchAhead(4, this.queueGeneration);
|
||||
this.prefetchAhead(6, this.queueGeneration);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -204,14 +204,15 @@ class SentenceQueueModule extends BaseModule {
|
||||
if (!this.isWebGLBookPresentationPrepared(sentence)) {
|
||||
await this.prefetchWebGLBookPresentation(sentence, {
|
||||
queueGeneration,
|
||||
queueIndex: 0
|
||||
queueIndex: 0,
|
||||
immediate: true
|
||||
});
|
||||
}
|
||||
if (!this.isCurrentQueueItem(item, queueGeneration)) return;
|
||||
|
||||
// Prefetch far enough ahead that media pauses do not block TTS
|
||||
// generation for the next spoken paragraph.
|
||||
this.prefetchAhead(4, queueGeneration);
|
||||
this.prefetchAhead(6, queueGeneration);
|
||||
if (!this.isCurrentQueueItem(item, queueGeneration)) return;
|
||||
|
||||
// Notify display handler with complete sentence
|
||||
@@ -910,10 +911,12 @@ class SentenceQueueModule extends BaseModule {
|
||||
sentence.animation = this.calculateAnimationTiming(words, sentence.tts?.duration || 0, sentence.cueMarkers || []);
|
||||
}
|
||||
|
||||
await new Promise(resolve => {
|
||||
const scheduler = window.requestIdleCallback || ((callback) => window.setTimeout(callback, 1));
|
||||
scheduler(() => resolve(), { timeout: 120 });
|
||||
});
|
||||
if (!options.immediate) {
|
||||
await new Promise(resolve => {
|
||||
const scheduler = window.requestIdleCallback || ((callback) => window.setTimeout(callback, 1));
|
||||
scheduler(() => resolve(), { timeout: 80 });
|
||||
});
|
||||
}
|
||||
if (options.queueGeneration !== undefined && options.queueGeneration !== this.queueGeneration) return null;
|
||||
|
||||
const spread = typeof bookPagination.preparePendingBlock === 'function'
|
||||
@@ -957,7 +960,7 @@ class SentenceQueueModule extends BaseModule {
|
||||
return queueGeneration === this.queueGeneration && this.sentenceQueue[0] === item;
|
||||
}
|
||||
|
||||
prefetchAhead(maxLookahead = 4, queueGeneration = this.queueGeneration) {
|
||||
prefetchAhead(maxLookahead = 6, queueGeneration = this.queueGeneration) {
|
||||
if (this.sentenceQueue.length <= 1) {
|
||||
document.dispatchEvent(new CustomEvent('story:process-state', {
|
||||
detail: { state: 'playing-ready', reason: 'no-prefetch-needed', sentenceId: this.sentenceQueue[0]?.id }
|
||||
|
||||
Reference in New Issue
Block a user