Defer paused renderer resize to idle callback
This commit is contained in:
@@ -12,6 +12,7 @@ import { addDisposableDomListener } from 'browser/Lifecycle';
|
||||
import { IColorSet, IRenderDebouncerWithCallback } from 'browser/Types';
|
||||
import { IOptionsService, IBufferService, IDecorationService } from 'common/services/Services';
|
||||
import { ICharSizeService, ICoreBrowserService, IRenderService } from 'browser/services/Services';
|
||||
import { IdleTaskQueue } from 'common/IdleTaskQueue';
|
||||
|
||||
interface ISelectionState {
|
||||
start: [number, number] | undefined;
|
||||
@@ -105,6 +106,7 @@ export class RenderService extends Disposable implements IRenderService {
|
||||
}
|
||||
|
||||
if (!this._isPaused && this._needsFullRefresh) {
|
||||
this._pausedResizeQueue.flush();
|
||||
this.refreshRows(0, this._rowCount - 1);
|
||||
this._needsFullRefresh = false;
|
||||
}
|
||||
@@ -203,8 +205,14 @@ export class RenderService extends Disposable implements IRenderService {
|
||||
this.refreshRows(0, this._rowCount - 1);
|
||||
}
|
||||
|
||||
private _pausedResizeQueue = new IdleTaskQueue();
|
||||
public onResize(cols: number, rows: number): void {
|
||||
this._renderer.onResize(cols, rows);
|
||||
if (this._isPaused) {
|
||||
this._pausedResizeQueue.clear();
|
||||
this._pausedResizeQueue.enqueue(() => this._renderer.onResize(cols, rows));
|
||||
} else {
|
||||
this._renderer.onResize(cols, rows);
|
||||
}
|
||||
this._fullRefresh();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user