Commit ff113a8b authored by Andrey Kosyakov's avatar Andrey Kosyakov Committed by Commit Bot

DevTools: throttle layer panel updates

Back-end can often produce layerTreeDidChange() at a rate that can't
be handled by front-end, so throttle it. A better fix would be to change
the protocol to only send these events when front-end is ready to
process them, but let's have a trivial fix first.

Change-Id: Id24233cf75697363ea1b7995346a735a2055b226
Reviewed-on: https://chromium-review.googlesource.com/786902Reviewed-by: default avatarDmitry Gozman <dgozman@chromium.org>
Commit-Queue: Andrey Kosyakov <caseq@chromium.org>
Cr-Commit-Position: refs/heads/master@{#519843}
parent e645f7ae
...@@ -44,6 +44,7 @@ Layers.LayerTreeModel = class extends SDK.SDKModel { ...@@ -44,6 +44,7 @@ Layers.LayerTreeModel = class extends SDK.SDKModel {
} }
/** @type {?SDK.LayerTreeBase} */ /** @type {?SDK.LayerTreeBase} */
this._layerTree = null; this._layerTree = null;
this._throttler = new Common.Throttler(20);
} }
disable() { disable() {
...@@ -80,6 +81,13 @@ Layers.LayerTreeModel = class extends SDK.SDKModel { ...@@ -80,6 +81,13 @@ Layers.LayerTreeModel = class extends SDK.SDKModel {
async _layerTreeChanged(layers) { async _layerTreeChanged(layers) {
if (!this._enabled) if (!this._enabled)
return; return;
this._throttler.schedule(this._innerSetLayers.bind(this, layers));
}
/**
* @param {?Array.<!Protocol.LayerTree.Layer>} layers
*/
async _innerSetLayers(layers) {
var layerTree = /** @type {!Layers.AgentLayerTree} */ (this._layerTree); var layerTree = /** @type {!Layers.AgentLayerTree} */ (this._layerTree);
await layerTree.setLayers(layers); await layerTree.setLayers(layers);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment