Merge pull request #10601 from Snuffleupagus/TextLayer-canvas-cleanup
Zero the width/height of the temporary canvas used during `TextLayer` rendering
This commit is contained in:
commit
7208f0ff67
@ -490,6 +490,17 @@ var renderTextLayer = (function renderTextLayerClosure() {
|
||||
this._capability = createPromiseCapability();
|
||||
this._renderTimer = null;
|
||||
this._bounds = [];
|
||||
|
||||
// Always clean-up the temporary canvas once rendering is no longer pending.
|
||||
this._capability.promise.finally(() => {
|
||||
if (this._layoutTextCtx) {
|
||||
// Zeroing the width and height cause Firefox to release graphics
|
||||
// resources immediately, which can greatly reduce memory consumption.
|
||||
this._layoutTextCtx.canvas.width = 0;
|
||||
this._layoutTextCtx.canvas.height = 0;
|
||||
this._layoutTextCtx = null;
|
||||
}
|
||||
});
|
||||
}
|
||||
TextLayerRenderTask.prototype = {
|
||||
get promise() {
|
||||
@ -497,16 +508,16 @@ var renderTextLayer = (function renderTextLayerClosure() {
|
||||
},
|
||||
|
||||
cancel: function TextLayer_cancel() {
|
||||
this._canceled = true;
|
||||
if (this._reader) {
|
||||
this._reader.cancel(new AbortException('text layer task cancelled'));
|
||||
this._reader.cancel(new AbortException('TextLayer task cancelled.'));
|
||||
this._reader = null;
|
||||
}
|
||||
this._canceled = true;
|
||||
if (this._renderTimer !== null) {
|
||||
clearTimeout(this._renderTimer);
|
||||
this._renderTimer = null;
|
||||
}
|
||||
this._capability.reject('canceled');
|
||||
this._capability.reject(new Error('TextLayer task cancelled.'));
|
||||
},
|
||||
|
||||
_processItems(items, styleCache) {
|
||||
|
Loading…
Reference in New Issue
Block a user