Fixes duplicate creation of PDFWorker for the same port.
This commit is contained in:
parent
9342054502
commit
69c804a0f4
@ -264,7 +264,7 @@ function getDocument(src, pdfDataRangeTransport,
|
|||||||
// Worker was not provided -- creating and owning our own. If message port
|
// Worker was not provided -- creating and owning our own. If message port
|
||||||
// is specified in global settings, using it.
|
// is specified in global settings, using it.
|
||||||
var workerPort = getDefaultSetting('workerPort');
|
var workerPort = getDefaultSetting('workerPort');
|
||||||
worker = workerPort ? new PDFWorker(null, workerPort) : new PDFWorker();
|
worker = workerPort ? PDFWorker.fromPort(workerPort) : new PDFWorker();
|
||||||
task._worker = worker;
|
task._worker = worker;
|
||||||
}
|
}
|
||||||
var docId = task.docId;
|
var docId = task.docId;
|
||||||
@ -1160,7 +1160,7 @@ class LoopbackPort {
|
|||||||
* @class
|
* @class
|
||||||
*/
|
*/
|
||||||
var PDFWorker = (function PDFWorkerClosure() {
|
var PDFWorker = (function PDFWorkerClosure() {
|
||||||
var nextFakeWorkerId = 0;
|
let nextFakeWorkerId = 0;
|
||||||
|
|
||||||
function getWorkerSrc() {
|
function getWorkerSrc() {
|
||||||
if (typeof workerSrc !== 'undefined') {
|
if (typeof workerSrc !== 'undefined') {
|
||||||
@ -1177,7 +1177,7 @@ var PDFWorker = (function PDFWorkerClosure() {
|
|||||||
error('No PDFJS.workerSrc specified');
|
error('No PDFJS.workerSrc specified');
|
||||||
}
|
}
|
||||||
|
|
||||||
var fakeWorkerFilesLoadedCapability;
|
let fakeWorkerFilesLoadedCapability;
|
||||||
|
|
||||||
// Loads worker code into main thread.
|
// Loads worker code into main thread.
|
||||||
function setupFakeWorkerGlobal() {
|
function setupFakeWorkerGlobal() {
|
||||||
@ -1229,7 +1229,13 @@ var PDFWorker = (function PDFWorkerClosure() {
|
|||||||
return URL.createObjectURL(new Blob([wrapper]));
|
return URL.createObjectURL(new Blob([wrapper]));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let pdfWorkerPorts = new WeakMap();
|
||||||
|
|
||||||
function PDFWorker(name, port) {
|
function PDFWorker(name, port) {
|
||||||
|
if (pdfWorkerPorts.has(port)) {
|
||||||
|
throw new Error('Cannot use more than one PDFWorker per port');
|
||||||
|
}
|
||||||
|
|
||||||
this.name = name;
|
this.name = name;
|
||||||
this.destroyed = false;
|
this.destroyed = false;
|
||||||
|
|
||||||
@ -1239,6 +1245,7 @@ var PDFWorker = (function PDFWorkerClosure() {
|
|||||||
this._messageHandler = null;
|
this._messageHandler = null;
|
||||||
|
|
||||||
if (port) {
|
if (port) {
|
||||||
|
pdfWorkerPorts.set(port, this);
|
||||||
this._initializeFromPort(port);
|
this._initializeFromPort(port);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -1444,6 +1451,13 @@ var PDFWorker = (function PDFWorkerClosure() {
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
PDFWorker.fromPort = function (port) {
|
||||||
|
if (pdfWorkerPorts.has(port)) {
|
||||||
|
return pdfWorkerPorts.get(port);
|
||||||
|
}
|
||||||
|
return new PDFWorker(null, port);
|
||||||
|
};
|
||||||
|
|
||||||
return PDFWorker;
|
return PDFWorker;
|
||||||
})();
|
})();
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user