muwasm: Reset page cache when loading a new document.
authorOlivier FAURE <[email protected]>
Fri, 16 Sep 2022 16:14:18 +0000 (18:14 +0200)
committerOlivier FAURE <[email protected]>
Fri, 16 Sep 2022 20:17:33 +0000 (22:17 +0200)
This fixes an issue where pages would render as blank when a document was open from disk.

platform/wasm/mupdf-view-worker.js
platform/wasm/mupdf-view.html
platform/wasm/mupdf-view.js

index c82a4dde031c91021d0a3a9a622d4a9733ac0ec7..f60a513705d8c12bde9b175fd6fd2f5abc69f4fc 100644 (file)
@@ -335,6 +335,10 @@ workerMethods.deleteCookie = function(cookiePointer) {
        delete jobCookies[cookiePointer];
 };
 
+workerMethods.resetPageCache = function() {
+       lastPageRender.clear();
+};
+
 workerMethods.mouseDownOnPage = function(pageNumber, dpi, x, y) {
        // TODO - Do we want to do a load every time?
        let pdfPage = openDocument.loadPage(pageNumber - 1);
index f6ca936f81fce4ca6f245412bd4334e25acfc34a..004916b2ece257b4496f726dddb4d06c06794500 100644 (file)
@@ -455,6 +455,8 @@ async function openFile(file) {
        if (file instanceof File) {
                freeDocument();
                try {
+                       // TODO - have a more elegant way to invalidate previous renders
+                       await mupdfView.resetPageCache();
                        await mupdfView.openDocumentFromBuffer(await file.arrayBuffer(), file.name);
                        documentOpen = true;
                        initDocument(file.name);
index ce4ec61f57276382c51f3d85032da1179348a037..42a3f8a05c0c4ffc7c5e211c4de8033a282b60d7 100644 (file)
@@ -97,6 +97,7 @@ mupdfView.getPageText = wrap("getPageText");
 mupdfView.search = wrap("search");
 mupdfView.drawPageAsPNG = wrap("drawPageAsPNG");
 mupdfView.deleteCookie = wrap("deleteCookie");
+mupdfView.resetPageCache = wrap("resetPageCache");
 
 mupdfView.mouseDownOnPage = wrap("mouseDownOnPage");
 mupdfView.mouseDragOnPage = wrap("mouseDragOnPage");