From 357805696b1f87f63dfd96026ce703887ff75027 Mon Sep 17 00:00:00 2001 From: Yury Delendik Date: Mon, 16 Apr 2012 14:49:55 -0500 Subject: [PATCH] Fixing concurrency and test driver --- src/api.js | 18 ++++++++++++++++-- test/driver.js | 2 ++ 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/src/api.js b/src/api.js index 1bebce28d..1dfafb9ee 100644 --- a/src/api.js +++ b/src/api.js @@ -133,6 +133,7 @@ var PDFPageProxy = (function PDFPageProxyClosure() { this.stats = new StatTimer(); this.stats.enabled = !!globalScope.PDFJS.enableStats; this.objs = transport.objs; + this.renderRequests = 0; } PDFPageProxy.prototype = { /** @@ -198,12 +199,14 @@ var PDFPageProxy = (function PDFPageProxyClosure() { * rendering. */ render: function(params) { + this.renderRequests++; + var promise = new Promise(); var stats = this.stats; stats.time('Overall'); // If there is no displayReadyPromise yet, then the operatorList was never // requested before. Make the request and create the promise. - if (!this.displayReadyPromise || this.destroyed) { + if (!this.displayReadyPromise) { this.displayReadyPromise = new Promise(); this.destroyed = false; @@ -213,7 +216,14 @@ var PDFPageProxy = (function PDFPageProxyClosure() { }); } + var self = this; function complete(error) { + self.renderRequests--; + if (self.destroyed && self.renderRequests == 0) { + delete self.operatorList; + delete self.displayReadyPromise; + } + if (error) promise.reject(error); else @@ -251,7 +261,6 @@ var PDFPageProxy = (function PDFPageProxyClosure() { // Always defer call to display() to work around bug in // Firefox error reporting from XHR callbacks. setTimeout(function pageSetTimeout() { - delete self.operatorList; self.displayReadyPromise.resolve(); }); }; @@ -340,6 +349,11 @@ var PDFPageProxy = (function PDFPageProxyClosure() { */ destroy: function() { this.destroyed = true; + + if (this.renderRequests == 0) { + delete self.operatorList; + delete self.displayReadyPromise; + } } }; return PDFPageProxy; diff --git a/test/driver.js b/test/driver.js index 26c5a156a..2f17fa43c 100644 --- a/test/driver.js +++ b/test/driver.js @@ -195,9 +195,11 @@ function nextPage(task, loadError) { viewport: viewport }; page.render(renderContext).then(function() { + page.destroy(); snapshotCurrentPage(task, false); }, function(error) { + page.destroy(); snapshotCurrentPage(task, 'render : ' + error); }); },