// processing it.
if (renderer_)
renderer_->ReceiveSwapBuffersAck(*ack);
+
+ // In OOM, we now might be able to release more resources that were held
+ // because they were exported.
+ if (tile_manager_) {
+ DCHECK(tile_manager_->resource_pool());
+
+ // TODO(vmpstr): Move resource pool to be LTHI member.
+ tile_manager_->resource_pool()->CheckBusyResources();
+ tile_manager_->resource_pool()->ReduceResourceUsage();
+ }
+ // If we're not visible, we likely released resources, so we want to
+ // aggressively flush here to make sure those DeleteTextures make it to the
+ // GPU process to free up the memory.
+ if (resource_provider_ && !visible_)
+ resource_provider_->ShallowFlushIfSupported();
}
void LayerTreeHostImpl::OnCanDrawStateChangedForTree() {
applied_delta = ScrollLayerWithLocalDelta(layer_impl, pending_delta);
}
+ if (layer_impl == InnerViewportScrollLayer()) {
+ unused_root_delta.Subtract(applied_delta);
+ const float kOverscrollEpsilon = 0.01f;
+ if (std::abs(unused_root_delta.x()) < kOverscrollEpsilon)
+ unused_root_delta.set_x(0.0f);
+ if (std::abs(unused_root_delta.y()) < kOverscrollEpsilon)
+ unused_root_delta.set_y(0.0f);
+ }
+
// If the layer wasn't able to move, try the next one in the hierarchy.
float move_threshold = 0.1f;
bool did_move_layer_x = std::abs(applied_delta.x()) > move_threshold;
break;
}
- if (layer_impl == InnerViewportScrollLayer()) {
- unused_root_delta.Subtract(applied_delta);
- const float kOverscrollEpsilon = 0.01f;
- if (std::abs(unused_root_delta.x()) < kOverscrollEpsilon)
- unused_root_delta.set_x(0.0f);
- if (std::abs(unused_root_delta.y()) < kOverscrollEpsilon)
- unused_root_delta.set_y(0.0f);
- }
-
did_lock_scrolling_layer_ = true;
if (!should_bubble_scrolls_) {
active_tree_->SetCurrentlyScrollingLayer(layer_impl);