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

Commit d86aeb12 authored by Chavi Weingarten's avatar Chavi Weingarten Committed by Automerger Merge Worker
Browse files

Merge "Add transaction callback in SurfaceComposerClient::setBuffer" into...

Merge "Add transaction callback in SurfaceComposerClient::setBuffer" into tm-dev am: faa3b879 am: 4940c022

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/native/+/17946878



Change-Id: I4ce3a1d74023dbf5c2a4e58e2583fb68093d9809
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents b92f0b82 4940c022
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -1495,6 +1495,18 @@ SurfaceComposerClient::Transaction& SurfaceComposerClient::Transaction::setBuffe
    s->bufferData = std::move(bufferData);
    registerSurfaceControlForCallback(sc);

    // With the current infrastructure, a release callback will not be invoked if there's no
    // transaction callback in the case when a buffer is latched and not released early. This is
    // because the legacy implementation didn't have a release callback and sent releases in the
    // transaction callback. Because of this, we need to make sure to have a transaction callback
    // set up when a buffer is sent in a transaction to ensure the caller gets the release
    // callback, regardless if they set up a transaction callback.
    //
    // TODO (b/230380821): Remove when release callbacks are separated from transaction callbacks
    addTransactionCompletedCallback([](void*, nsecs_t, const sp<Fence>&,
                                       const std::vector<SurfaceControlStats>&) {},
                                    nullptr);

    mContainsBuffer = true;
    return *this;
}