From 7469ba14feb15e8ce6ae171c4d6ec0fcac231faa Mon Sep 17 00:00:00 2001 From: Bogdan Lukin Date: Wed, 31 Mar 2021 12:48:14 +0700 Subject: [PATCH] maintain single overlay in loop --- .../external_view_embedder/external_view_embedder.cc | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/shell/platform/android/external_view_embedder/external_view_embedder.cc b/shell/platform/android/external_view_embedder/external_view_embedder.cc index 69370e7ca65bf..c0c00b6cf33b2 100644 --- a/shell/platform/android/external_view_embedder/external_view_embedder.cc +++ b/shell/platform/android/external_view_embedder/external_view_embedder.cc @@ -137,7 +137,14 @@ void AndroidExternalViewEmbedder::SubmitFrame( // slighly larger. For example, {0.3, 0.5, 3.1, 4.7} becomes {0, 0, 4, // 5}. intersection_rect.set(intersection_rect.roundOut()); - overlay_layers.at(view_id).push_back(intersection_rect); + if (overlay_layers.at(view_id).empty()) { + overlay_layers.at(view_id).push_back(intersection_rect); + } else if (intersection_rect.contains( + overlay_layers.at(view_id).back())) { + overlay_layers.at(view_id).back() = intersection_rect; + } else { + overlay_layers.at(view_id).back().join(intersection_rect); + } // Clip the background canvas, so it doesn't contain any of the pixels // drawn on the overlay layer. background_canvas->clipRect(intersection_rect, SkClipOp::kDifference);