Make dependencyTracker work with the renderer

This commit is contained in:
Ujjwal Sharma 2025-10-03 16:54:58 +05:30
parent 4734888685
commit aaa7a20874
2 changed files with 28 additions and 7 deletions

View File

@ -2403,10 +2403,10 @@ class RendererWorker {
const src =
// eslint-disable-next-line no-nested-ternary
typeof PDFJSDev === "undefined"
? "../src/pdf.worker.js"
? "../src/pdf.renderer.js"
: PDFJSDev.test("MOZCENTRAL")
? "resource://pdf.js/build/pdf.worker.mjs"
: "../build/pdf.worker.mjs";
? "resource://pdf.js/build/pdf.renderer.mjs"
: "../build/pdf.renderer.mjs";
this.#worker = new Worker(src, { type: "module" });
this.#handler = new MessageHandler("main", "renderer", this.#worker);
this.#handler.send("configure", { channelPort, enableHWA }, [channelPort]);
@ -3427,9 +3427,16 @@ class InternalRenderTask {
this.graphicsReadyCallback ||= this._continueBound;
return;
}
this.gfx.dependencyTracker?.growOperationsCount(
this.operatorList.fnArray.length
);
if (!this._renderInWorker) {
this.gfx.dependencyTracker?.growOperationsCount(
this.operatorList.fnArray.length
);
} else {
this.rendererHandler.send("growOperationsCount", {
taskID: this.taskID,
newOperatorListLength: this.operatorList.fnArray.length,
});
}
this.stepper?.updateOperatorList(this.operatorList);
if (this.running) {

View File

@ -84,6 +84,7 @@ class RendererMessageHandler {
transparency,
background,
optionalContentConfig,
dependencyTracker,
}) => {
assert(!this.#tasks.has(taskID), "Task already initialized");
const ctx = canvas.getContext("2d", {
@ -99,7 +100,8 @@ class RendererMessageHandler {
this.#filterFactory,
{ optionalContentConfig },
map,
colors
colors,
dependencyTracker
);
gfx.beginDrawing({ transform, viewport, transparency, background });
this.#tasks.set(taskID, { canvas, gfx });
@ -122,6 +124,18 @@ class RendererMessageHandler {
}
);
mainHandler.on(
"growOperationsCount",
({ taskID, newOperatorListLength }) => {
if (terminated) {
throw new Error("Renderer worker has been terminated.");
}
const task = this.#tasks.get(taskID);
assert(task !== undefined, "Task not initialized");
task.gfx.dependencyTracker?.growOperationsCount(newOperatorListLength);
}
);
mainHandler.on("end", ({ taskID }) => {
if (terminated) {
throw new Error("Renderer worker has been terminated.");