this.stats = new StatTimer();
this.stats.enabled = !!globalScope.PDFJS.enableStats;
this.objs = transport.objs;
+ this.renderRequests = 0;
}
PDFPageProxy.prototype = {
/**
* 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;
});
}
+ 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
// 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();
});
};
*/
destroy: function() {
this.destroyed = true;
+
+ if (this.renderRequests == 0) {
+ delete self.operatorList;
+ delete self.displayReadyPromise;
+ }
}
};
return PDFPageProxy;
viewport: viewport
};
page.render(renderContext).then(function() {
+ page.destroy();
snapshotCurrentPage(task, false);
},
function(error) {
+ page.destroy();
snapshotCurrentPage(task, 'render : ' + error);
});
},