diff options
-rw-r--r-- | libs/hwui/Readback.cpp | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/libs/hwui/Readback.cpp b/libs/hwui/Readback.cpp index e08b99d52cdb..d897e94f969f 100644 --- a/libs/hwui/Readback.cpp +++ b/libs/hwui/Readback.cpp @@ -32,6 +32,8 @@ using namespace android::uirenderer::renderthread; +static constexpr bool sEnableExtraCropInset = true; + namespace android { namespace uirenderer { @@ -71,6 +73,20 @@ CopyResult Readback::copySurfaceInto(ANativeWindow* window, const Rect& inSrcRec ALOGW("Surface doesn't have any previously queued frames, nothing to readback from"); return CopyResult::SourceEmpty; } + + if (sEnableExtraCropInset && + (cropRect.right - cropRect.left != bitmap->width() || + cropRect.bottom - cropRect.top != bitmap->height())) { + /* + * When we need use filtering, we should also make border shrink here like gui. + * But we could not check format for YUV or RGB here... Just use 1 pix. + */ + cropRect.left += 0.5f; + cropRect.top += 0.5f; + cropRect.right -= 0.5f; + cropRect.bottom -= 0.5f; + } + UniqueAHardwareBuffer sourceBuffer{rawSourceBuffer}; AHardwareBuffer_Desc description; AHardwareBuffer_describe(sourceBuffer.get(), &description); |