| Index: cc/trees/layer_tree_host.cc
|
| diff --git a/cc/trees/layer_tree_host.cc b/cc/trees/layer_tree_host.cc
|
| index 220083f77f30b11cc53a38d723df0856f2da10b1..a88822896bfa2d61d890a47ee68fde90b4f37774 100644
|
| --- a/cc/trees/layer_tree_host.cc
|
| +++ b/cc/trees/layer_tree_host.cc
|
| @@ -61,7 +61,7 @@ RendererCapabilities::RendererCapabilities()
|
| RendererCapabilities::~RendererCapabilities() {}
|
|
|
| UIResourceRequest::UIResourceRequest()
|
| - : type(UIResourceInvalidRequest), id(0), bitmap(NULL) {}
|
| + : type(UIResourceInvalidRequest), id(0), bitmap(NULL), ack(0) {}
|
|
|
| UIResourceRequest::~UIResourceRequest() {}
|
|
|
| @@ -370,6 +370,13 @@ void LayerTreeHost::FinishCommitOnImplThread(LayerTreeHostImpl* host_impl) {
|
| sync_tree->ProcessUIResourceRequestQueue();
|
| }
|
|
|
| + // If all UI resource evictions will not be acknowledged by this commit, then
|
| + // another commit is required.
|
| + if (ui_resource_eviction_count_last_acked_ !=
|
| + host_impl->ui_resource_eviction_count()) {
|
| + host_impl->SetNeedsCommit();
|
| + }
|
| +
|
| DCHECK(!sync_tree->ViewportSizeInvalid());
|
|
|
| if (new_impl_tree_has_no_evicted_resources) {
|
| @@ -1165,4 +1172,18 @@ void LayerTreeHost::RecreateUIResources(bool resource_lost) {
|
| }
|
| }
|
|
|
| +void LayerTreeHost::SetUIResourceEvictionCountToAck(uint64 ui_resource_eviction_count) {
|
| + if (ui_resource_eviction_count_last_acked_ == ui_resource_eviction_count)
|
| + return;
|
| +
|
| + bool resource_lost = false;
|
| + RecreateUIResources(resource_lost);
|
| +
|
| + UIResourceRequest request;
|
| + request.type = UIResourceRequest::UIResourceEvictionAck;
|
| + request.ack = ui_resource_eviction_count;
|
| + ui_resource_request_queue_.push_back(request);
|
| + ui_resource_eviction_count_last_acked_ = ui_resource_eviction_count;
|
| +}
|
| +
|
| } // namespace cc
|
|
|