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

Commit c7684799 authored by Pablo Ceballos's avatar Pablo Ceballos Committed by gitbuildkicker
Browse files

SF: Make screenshot surface async

It will only ever have one frame pushed to it and this guarantees that
the late-latching logic will always latch it immediately.

Bug 30209608

Change-Id: I875cb5ea258ebb0afae5d1af4ad946475c2240bc
parent cb6943f4
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -3603,6 +3603,14 @@ status_t SurfaceFlinger::captureScreenImplLocked(
    // create a surface (because we're a producer, and we need to
    // dequeue/queue a buffer)
    sp<Surface> sur = new Surface(producer, false);

    // Put the screenshot Surface into async mode so that
    // Layer::headFenceHasSignaled will always return true and we'll latch the
    // first buffer regardless of whether or not its acquire fence has
    // signaled. This is needed to avoid a race condition in the rotation
    // animation. See b/30209608
    sur->setAsyncMode(true);

    ANativeWindow* window = sur.get();

    status_t result = native_window_api_connect(window, NATIVE_WINDOW_API_EGL);