Remove the intentState.receivingOperatorList
boolean since it's redundant
The `receivingOperatorList` property is currently tracked *twice* in the rendering code, both directly and inversely through the `intentState.operatorList.lastChunk` boolean. This type of double bookkeeping is never a good idea, since it's just too easy for the properties to accidentally fall out of sync. In this case there's even a `cleanup`-related bug caused by this, which means that `PDFPageProxy._tryCleanup` will never be able to discard any data if there's an error on the worker-thread (as handled through the 'PageError' message). Hence the simplest solution seems, at least to me, to update `PDFPageProxy._tryCleanup` to replace the `intentState.receivingOperatorList` check with a `!intentState.operatorList.lastChunk` check and completely remove the former property.
This commit is contained in:
parent
d7afb74a6e
commit
c6fcdf474b
@ -1023,7 +1023,6 @@ class PDFPageProxy {
|
|||||||
// If there's no displayReadyCapability yet, then the operatorList
|
// If there's no displayReadyCapability yet, then the operatorList
|
||||||
// was never requested before. Make the request and create the promise.
|
// was never requested before. Make the request and create the promise.
|
||||||
if (!intentState.displayReadyCapability) {
|
if (!intentState.displayReadyCapability) {
|
||||||
intentState.receivingOperatorList = true;
|
|
||||||
intentState.displayReadyCapability = createPromiseCapability();
|
intentState.displayReadyCapability = createPromiseCapability();
|
||||||
intentState.operatorList = {
|
intentState.operatorList = {
|
||||||
fnArray: [],
|
fnArray: [],
|
||||||
@ -1125,7 +1124,6 @@ class PDFPageProxy {
|
|||||||
if (!intentState.opListReadCapability) {
|
if (!intentState.opListReadCapability) {
|
||||||
opListTask = {};
|
opListTask = {};
|
||||||
opListTask.operatorListChanged = operatorListChanged;
|
opListTask.operatorListChanged = operatorListChanged;
|
||||||
intentState.receivingOperatorList = true;
|
|
||||||
intentState.opListReadCapability = createPromiseCapability();
|
intentState.opListReadCapability = createPromiseCapability();
|
||||||
intentState.renderTasks = [];
|
intentState.renderTasks = [];
|
||||||
intentState.renderTasks.push(opListTask);
|
intentState.renderTasks.push(opListTask);
|
||||||
@ -1241,7 +1239,7 @@ class PDFPageProxy {
|
|||||||
Object.keys(this.intentStates).some(function(intent) {
|
Object.keys(this.intentStates).some(function(intent) {
|
||||||
const intentState = this.intentStates[intent];
|
const intentState = this.intentStates[intent];
|
||||||
return (intentState.renderTasks.length !== 0 ||
|
return (intentState.renderTasks.length !== 0 ||
|
||||||
intentState.receivingOperatorList);
|
!intentState.operatorList.lastChunk);
|
||||||
}, this)) {
|
}, this)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -1290,7 +1288,6 @@ class PDFPageProxy {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (operatorListChunk.lastChunk) {
|
if (operatorListChunk.lastChunk) {
|
||||||
intentState.receivingOperatorList = false;
|
|
||||||
this._tryCleanup();
|
this._tryCleanup();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user