Commit b85a1ca8 authored by Fernando Serboncini's avatar Fernando Serboncini Committed by Commit Bot

Limit number of recycle resources for CanvasResourceProvider

This would look like a memory "leak" if too many resources are
used at the same time.

Bug: 1011812
Change-Id: I1b2e69708a8647817c57b4b78df814c9177deb0b
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1852986
Auto-Submit: Fernando Serboncini <fserb@chromium.org>
Commit-Queue: Khushal <khushalsagar@chromium.org>
Reviewed-by: default avatarKhushal <khushalsagar@chromium.org>
Cr-Commit-Position: refs/heads/master@{#704649}
parent b6e4f59d
......@@ -53,6 +53,11 @@ enum {
// underlying GrContext is flushed.
kMaxDrawsBeforeContextFlush = 50,
// Canvas resource provider
// ========================
// The maximum number of inflight resources waiting to be used for recycling.
kMaxRecycledCanvasResources = 2,
}; // enum
} // namespace canvas_heuristic_parameters
......
......@@ -1145,6 +1145,11 @@ cc::ImageDecodeCache* CanvasResourceProvider::ImageDecodeCacheF16() {
void CanvasResourceProvider::RecycleResource(
scoped_refptr<CanvasResource> resource) {
// We don't want to keep an arbitrary large number of canvases.
if (canvas_resources_.size() >
canvas_heuristic_parameters::kMaxRecycledCanvasResources)
return;
// Need to check HasOneRef() because if there are outstanding references to
// the resource, it cannot be safely recycled.
if (resource->HasOneRef() && resource_recycling_enabled_ &&
......
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