summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTreeHugger Robot <treehugger-gerrit@google.com>2021-07-14 22:09:13 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2021-07-14 22:09:13 +0000
commit5c86f2885f3cc0f63686b2ac3655f9958449d9cc (patch)
tree1bc72e0caf0e6e1d11735bf2a8d92b63e5a62e5f
parent76e9cc0f0866650be18be095b4e8d5eb279c921b (diff)
parent0f284da9239a11e5c23c22222ccdc5babcbd0f7d (diff)
downloadbase-5c86f2885f3cc0f63686b2ac3655f9958449d9cc.tar.gz
Merge "Avoid sampling outside BQ crop rect" into sc-dev
-rw-r--r--libs/hwui/Readback.cpp6
1 files changed, 4 insertions, 2 deletions
diff --git a/libs/hwui/Readback.cpp b/libs/hwui/Readback.cpp
index d8735ce57b65..a743d30939d0 100644
--- a/libs/hwui/Readback.cpp
+++ b/libs/hwui/Readback.cpp
@@ -183,8 +183,10 @@ CopyResult Readback::copySurfaceInto(ANativeWindow* window, const Rect& inSrcRec
SkPaint paint;
paint.setAlpha(255);
paint.setBlendMode(SkBlendMode::kSrc);
- canvas->drawImageRect(image, imageSrcRect, imageDstRect, sampling, &paint,
- SkCanvas::kFast_SrcRectConstraint);
+ const bool hasBufferCrop = cropRect.left < cropRect.right && cropRect.top < cropRect.bottom;
+ auto constraint =
+ hasBufferCrop ? SkCanvas::kStrict_SrcRectConstraint : SkCanvas::kFast_SrcRectConstraint;
+ canvas->drawImageRect(image, imageSrcRect, imageDstRect, sampling, &paint, constraint);
canvas->restore();
if (!tmpSurface->readPixels(*bitmap, 0, 0)) {