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

Commit b4f143d0 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: ad83e535

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



Change-Id: I1c20d535ca38c94d779bc308dfa4840ae36e5dc5
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents e5df24dd ad83e535
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -1498,6 +1498,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;
}