From 8dff301ce19f2298f3e48fa187b2a62e1bf3af33 Mon Sep 17 00:00:00 2001 From: Yury Delendik Date: Wed, 25 Nov 2015 18:21:23 -0600 Subject: [PATCH] Worker shall wait for MessageHandler to be created at api side. --- src/core/worker.js | 12 +++++++----- src/display/api.js | 1 + 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/core/worker.js b/src/core/worker.js index c45634004..97842d035 100644 --- a/src/core/worker.js +++ b/src/core/worker.js @@ -84,7 +84,7 @@ var WorkerMessageHandler = PDFJS.WorkerMessageHandler = { return WorkerMessageHandler.createDocumentHandler(data, port); }); }, - createDocumentHandler: function wphCreateDocumentHandler(data, port) { + createDocumentHandler: function wphCreateDocumentHandler(docParams, port) { // This context is actually holds references on pdfManager and handler, // until the latter is destroyed. var pdfManager; @@ -92,8 +92,8 @@ var WorkerMessageHandler = PDFJS.WorkerMessageHandler = { var cancelXHRs = null; var WorkerTasks = []; - var docId = data.docId; - var workerHandlerName = data.docId + '_worker'; + var docId = docParams.docId; + var workerHandlerName = docParams.docId + '_worker'; var handler = new MessageHandler(workerHandlerName, docId, port); function ensureNotTerminated() { @@ -346,7 +346,6 @@ var WorkerMessageHandler = PDFJS.WorkerMessageHandler = { } pdfManager = newPdfManager; - handler.send('PDFManagerReady', null); pdfManager.onLoadedStream().then(function(stream) { handler.send('DataLoaded', { length: stream.bytes.byteLength }); @@ -567,7 +566,10 @@ var WorkerMessageHandler = PDFJS.WorkerMessageHandler = { }); }); - setupDoc(data); + handler.on('Ready', function wphReady(data) { + setupDoc(docParams); + docParams = null; // we don't need docParams anymore -- saving memory. + }); return workerHandlerName; } }; diff --git a/src/display/api.js b/src/display/api.js index 1b8dce16c..654de95b9 100644 --- a/src/display/api.js +++ b/src/display/api.js @@ -359,6 +359,7 @@ PDFJS.getDocument = function getDocument(src, throw new Error('Loading aborted'); } var messageHandler = new MessageHandler(docId, workerId, worker.port); + messageHandler.send('Ready', null); var transport = new WorkerTransport(messageHandler, task, rangeTransport); task._transport = transport; });