Merge "Update placeholder ImageReader to close images" into androidx-main
diff --git a/compose/ui/ui-graphics/src/androidMain/kotlin/androidx/compose/ui/graphics/layer/LayerManager.android.kt b/compose/ui/ui-graphics/src/androidMain/kotlin/androidx/compose/ui/graphics/layer/LayerManager.android.kt
index cb37425..f2833bd 100644
--- a/compose/ui/ui-graphics/src/androidMain/kotlin/androidx/compose/ui/graphics/layer/LayerManager.android.kt
+++ b/compose/ui/ui-graphics/src/androidMain/kotlin/androidx/compose/ui/graphics/layer/LayerManager.android.kt
@@ -87,7 +87,11 @@
                 1,
                 PixelFormat.RGBA_8888,
                 1
-            ).also { imageReader = it }
+            ).apply {
+                // We don't care about the result, but release the buffer back to the queue
+                // for subsequent renders to ensure the RenderThread is free as much as possible
+                setOnImageAvailableListener({ it?.acquireLatestImage()?.close() }, handler)
+            }.also { imageReader = it }
             val surface = reader.surface
             val canvas = LockHardwareCanvasHelper.lockHardwareCanvas(surface)
             // on Robolectric even this canvas is not hardware accelerated and drawing render nodes