Fixing concurrency and test driver
This commit is contained in:
parent
1e96c73207
commit
357805696b
18
src/api.js
18
src/api.js
@ -133,6 +133,7 @@ var PDFPageProxy = (function PDFPageProxyClosure() {
|
|||||||
this.stats = new StatTimer();
|
this.stats = new StatTimer();
|
||||||
this.stats.enabled = !!globalScope.PDFJS.enableStats;
|
this.stats.enabled = !!globalScope.PDFJS.enableStats;
|
||||||
this.objs = transport.objs;
|
this.objs = transport.objs;
|
||||||
|
this.renderRequests = 0;
|
||||||
}
|
}
|
||||||
PDFPageProxy.prototype = {
|
PDFPageProxy.prototype = {
|
||||||
/**
|
/**
|
||||||
@ -198,12 +199,14 @@ var PDFPageProxy = (function PDFPageProxyClosure() {
|
|||||||
* rendering.
|
* rendering.
|
||||||
*/
|
*/
|
||||||
render: function(params) {
|
render: function(params) {
|
||||||
|
this.renderRequests++;
|
||||||
|
|
||||||
var promise = new Promise();
|
var promise = new Promise();
|
||||||
var stats = this.stats;
|
var stats = this.stats;
|
||||||
stats.time('Overall');
|
stats.time('Overall');
|
||||||
// If there is no displayReadyPromise yet, then the operatorList was never
|
// If there is no displayReadyPromise yet, then the operatorList was never
|
||||||
// requested before. Make the request and create the promise.
|
// requested before. Make the request and create the promise.
|
||||||
if (!this.displayReadyPromise || this.destroyed) {
|
if (!this.displayReadyPromise) {
|
||||||
this.displayReadyPromise = new Promise();
|
this.displayReadyPromise = new Promise();
|
||||||
this.destroyed = false;
|
this.destroyed = false;
|
||||||
|
|
||||||
@ -213,7 +216,14 @@ var PDFPageProxy = (function PDFPageProxyClosure() {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var self = this;
|
||||||
function complete(error) {
|
function complete(error) {
|
||||||
|
self.renderRequests--;
|
||||||
|
if (self.destroyed && self.renderRequests == 0) {
|
||||||
|
delete self.operatorList;
|
||||||
|
delete self.displayReadyPromise;
|
||||||
|
}
|
||||||
|
|
||||||
if (error)
|
if (error)
|
||||||
promise.reject(error);
|
promise.reject(error);
|
||||||
else
|
else
|
||||||
@ -251,7 +261,6 @@ var PDFPageProxy = (function PDFPageProxyClosure() {
|
|||||||
// Always defer call to display() to work around bug in
|
// Always defer call to display() to work around bug in
|
||||||
// Firefox error reporting from XHR callbacks.
|
// Firefox error reporting from XHR callbacks.
|
||||||
setTimeout(function pageSetTimeout() {
|
setTimeout(function pageSetTimeout() {
|
||||||
delete self.operatorList;
|
|
||||||
self.displayReadyPromise.resolve();
|
self.displayReadyPromise.resolve();
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
@ -340,6 +349,11 @@ var PDFPageProxy = (function PDFPageProxyClosure() {
|
|||||||
*/
|
*/
|
||||||
destroy: function() {
|
destroy: function() {
|
||||||
this.destroyed = true;
|
this.destroyed = true;
|
||||||
|
|
||||||
|
if (this.renderRequests == 0) {
|
||||||
|
delete self.operatorList;
|
||||||
|
delete self.displayReadyPromise;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
return PDFPageProxy;
|
return PDFPageProxy;
|
||||||
|
@ -195,9 +195,11 @@ function nextPage(task, loadError) {
|
|||||||
viewport: viewport
|
viewport: viewport
|
||||||
};
|
};
|
||||||
page.render(renderContext).then(function() {
|
page.render(renderContext).then(function() {
|
||||||
|
page.destroy();
|
||||||
snapshotCurrentPage(task, false);
|
snapshotCurrentPage(task, false);
|
||||||
},
|
},
|
||||||
function(error) {
|
function(error) {
|
||||||
|
page.destroy();
|
||||||
snapshotCurrentPage(task, 'render : ' + error);
|
snapshotCurrentPage(task, 'render : ' + error);
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
Loading…
x
Reference in New Issue
Block a user