Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 44fc6317 authored by John Reck's avatar John Reck
Browse files

Ensure picture isn't recording in createBitmap

Picture#draw() will silently due an #endRecording() if it
wasn't called. Bitmap.createBitmap doesn't do this until
after it's too late.

So do an up-front #endRecording() to ensure state is
good to go

Bug: 80539264
Test: HardwareBitmapTests#testReadbackThroughPictureNoEndRecording
Change-Id: Ic66c41462e88880b73c5093d7541c4ce3d71adeb
parent 1031bf5f
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -1232,6 +1232,7 @@ public final class Bitmap implements Parcelable {
        if (config == null) {
            throw new IllegalArgumentException("Config must not be null");
        }
        source.endRecording();
        if (source.requiresHardwareAcceleration() && config != Config.HARDWARE) {
            StrictMode.noteSlowCall("GPU readback");
        }
+3 −0
Original line number Diff line number Diff line
@@ -123,6 +123,9 @@ public class Picture {
     * drawn to a hardware-accelerated canvas. If this returns true then this Picture can only
     * be drawn to another Picture or to a Canvas where canvas.isHardwareAccelerated() is true.
     *
     * Note this value is only updated after recording has finished by a call to
     * {@link #endRecording()}. Prior to that it will be the default value of false.
     *
     * @return true if the Picture can only be drawn to a hardware-accelerated canvas,
     *         false otherwise.
     */