Merge pull request #12613 from Snuffleupagus/isPageCached
Trigger cleanup, once rendering has finished, in `PDFThumbnailView.draw`
This commit is contained in:
commit
59b35600be
@ -115,6 +115,10 @@ function PDFPageViewBuffer(size) {
|
|||||||
data.shift().destroy();
|
data.shift().destroy();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
this.has = function (view) {
|
||||||
|
return data.includes(view);
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
function isSameScale(oldScale, newScale) {
|
function isSameScale(oldScale, newScale) {
|
||||||
@ -1096,9 +1100,15 @@ class BaseViewer {
|
|||||||
if (!this.pdfDocument) {
|
if (!this.pdfDocument) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (pageNumber < 1 || pageNumber > this.pagesCount) {
|
if (
|
||||||
|
!(
|
||||||
|
Number.isInteger(pageNumber) &&
|
||||||
|
pageNumber > 0 &&
|
||||||
|
pageNumber <= this.pagesCount
|
||||||
|
)
|
||||||
|
) {
|
||||||
console.error(
|
console.error(
|
||||||
`${this._name}.isPageVisible: "${pageNumber}" is out of bounds.`
|
`${this._name}.isPageVisible: "${pageNumber}" is not a valid page.`
|
||||||
);
|
);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -1107,6 +1117,32 @@ class BaseViewer {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {number} pageNumber
|
||||||
|
*/
|
||||||
|
isPageCached(pageNumber) {
|
||||||
|
if (!this.pdfDocument || !this._buffer) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (
|
||||||
|
!(
|
||||||
|
Number.isInteger(pageNumber) &&
|
||||||
|
pageNumber > 0 &&
|
||||||
|
pageNumber <= this.pagesCount
|
||||||
|
)
|
||||||
|
) {
|
||||||
|
console.error(
|
||||||
|
`${this._name}.isPageCached: "${pageNumber}" is not a valid page.`
|
||||||
|
);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
const pageView = this._pages[pageNumber - 1];
|
||||||
|
if (!pageView) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return this._buffer.has(pageView);
|
||||||
|
}
|
||||||
|
|
||||||
cleanup() {
|
cleanup() {
|
||||||
for (let i = 0, ii = this._pages.length; i < ii; i++) {
|
for (let i = 0, ii = this._pages.length; i < ii; i++) {
|
||||||
if (
|
if (
|
||||||
|
@ -95,6 +95,11 @@ class IPDFLinkService {
|
|||||||
* @param {number} pageNumber
|
* @param {number} pageNumber
|
||||||
*/
|
*/
|
||||||
isPageVisible(pageNumber) {}
|
isPageVisible(pageNumber) {}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {number} pageNumber
|
||||||
|
*/
|
||||||
|
isPageCached(pageNumber) {}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -458,6 +458,13 @@ class PDFLinkService {
|
|||||||
isPageVisible(pageNumber) {
|
isPageVisible(pageNumber) {
|
||||||
return this.pdfViewer.isPageVisible(pageNumber);
|
return this.pdfViewer.isPageVisible(pageNumber);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {number} pageNumber
|
||||||
|
*/
|
||||||
|
isPageCached(pageNumber) {
|
||||||
|
return this.pdfViewer.isPageCached(pageNumber);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function isValidExplicitDestination(dest) {
|
function isValidExplicitDestination(dest) {
|
||||||
@ -609,6 +616,13 @@ class SimpleLinkService {
|
|||||||
isPageVisible(pageNumber) {
|
isPageVisible(pageNumber) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {number} pageNumber
|
||||||
|
*/
|
||||||
|
isPageCached(pageNumber) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export { PDFLinkService, SimpleLinkService };
|
export { PDFLinkService, SimpleLinkService };
|
||||||
|
@ -363,6 +363,16 @@ class PDFThumbnailView {
|
|||||||
finishRenderTask(error);
|
finishRenderTask(error);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
// Only trigger cleanup, once rendering has finished, when the current
|
||||||
|
// pageView is *not* cached on the `BaseViewer`-instance.
|
||||||
|
resultPromise.finally(() => {
|
||||||
|
const pageCached = this.linkService.isPageCached(this.id);
|
||||||
|
if (pageCached) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this.pdfPage?.cleanup();
|
||||||
|
});
|
||||||
|
|
||||||
return resultPromise;
|
return resultPromise;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user