From df620959c961c9c2895c60550e67498fe023d2ac Mon Sep 17 00:00:00 2001 From: hainiaochen Date: Thu, 11 May 2023 12:42:04 +0800 Subject: [PATCH] Close unused Image before acquire new one Fix IllegalStateException: maxImages (30) has already been acquired, call #close before acquiring more. Before onImageRequestCompleted, onImageAvailable may be called multiple times, with only the last one being used. And acquireLatestImage has limitations, so it is necessary to close unused images. Change-Id: I2cc1da31596d2458b31d14340b151ac0d8311ca7 --- .../com/android/systemui/screenshot/ScrollCaptureClient.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/SystemUI/src/com/android/systemui/screenshot/ScrollCaptureClient.java b/packages/SystemUI/src/com/android/systemui/screenshot/ScrollCaptureClient.java index 93e5021fd6e08..e93f737308baf 100644 --- a/packages/SystemUI/src/com/android/systemui/screenshot/ScrollCaptureClient.java +++ b/packages/SystemUI/src/com/android/systemui/screenshot/ScrollCaptureClient.java @@ -365,6 +365,9 @@ public class ScrollCaptureClient { @Override public void onImageAvailable(ImageReader reader) { synchronized (mLock) { + if (mCapturedImage != null) { + mCapturedImage.close(); + } mCapturedImage = mReader.acquireLatestImage(); if (mCapturedArea != null) { completeCaptureRequest();