Commit 9500d6e2 authored by Khushal's avatar Khushal Committed by Commit Bot

blink/canvas: Limit cleanup tasks for locked images.

Don't queue a cleanup task if one is already pending. This avoid
queueing multiple redundant tasks for the case where images are being
purged mid-draw due to exceeding budget constraints.

R=fserb@chromium.org

Cq-Include-Trybots: luci.chromium.try:linux_layout_tests_slimming_paint_v2;master.tryserver.blink:linux_trusty_blink_rel
Change-Id: I17ba7c59ee6031bf2c18f81e3691685a78634f3c
Bug: 876001, 872117
Reviewed-on: https://chromium-review.googlesource.com/1182601Reviewed-by: default avatarFernando Serboncini <fserb@chromium.org>
Commit-Queue: Khushal <khushalsagar@chromium.org>
Cr-Commit-Position: refs/heads/master@{#584759}
parent 1eeedddb
......@@ -544,15 +544,21 @@ void CanvasResourceProvider::CanvasImageProvider::ReleaseLockedImages() {
void CanvasResourceProvider::CanvasImageProvider::CanUnlockImage(
ScopedDecodedDrawImage image) {
if (locked_images_.empty()) {
if (!cleanup_task_pending_) {
cleanup_task_pending_ = true;
Platform::Current()->CurrentThread()->GetTaskRunner()->PostTask(
FROM_HERE, base::BindOnce(&CanvasImageProvider::ReleaseLockedImages,
FROM_HERE, base::BindOnce(&CanvasImageProvider::CleanupLockedImages,
weak_factory_.GetWeakPtr()));
}
locked_images_.push_back(std::move(image));
}
void CanvasResourceProvider::CanvasImageProvider::CleanupLockedImages() {
cleanup_task_pending_ = false;
ReleaseLockedImages();
}
CanvasResourceProvider::CanvasResourceProvider(
const IntSize& size,
const CanvasColorParams& color_params,
......
......@@ -185,7 +185,9 @@ class PLATFORM_EXPORT CanvasResourceProvider
private:
void CanUnlockImage(ScopedDecodedDrawImage);
void CleanupLockedImages();
bool cleanup_task_pending_ = false;
std::vector<ScopedDecodedDrawImage> locked_images_;
cc::PlaybackImageProvider playback_image_provider_;
......
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