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

Commit f7add4d9 authored by Patrick Williams's avatar Patrick Williams Committed by Android (Google) Code Review
Browse files

Merge "Log fatal if transaction callbacks are called more than once" into main

parents 0c07eec1 fd0c1b4b
Loading
Loading
Loading
Loading
+23 −2
Original line number Diff line number Diff line
@@ -1901,8 +1901,29 @@ SurfaceComposerClient::Transaction& SurfaceComposerClient::Transaction::addTrans
        CallbackId::Type callbackType) {
    auto listener = TransactionCompletedListener::getInstance();

    auto callbackWithContext = std::bind(callback, callbackContext, std::placeholders::_1,
                                         std::placeholders::_2, std::placeholders::_3);
    TransactionCompletedCallback callbackWithContext =
            [called = false, callback,
             callbackContext](nsecs_t latchTime, const sp<Fence>& presentFence,
                              const std::vector<SurfaceControlStats>& stats) mutable {
                if (called) {
                    std::stringstream stream;
                    auto it = stats.begin();
                    if (it != stats.end()) {
                        stream << it->surfaceControl->getName();
                        it++;
                    }
                    while (it != stats.end()) {
                        stream << ", " << it->surfaceControl->getName();
                        it++;
                    }
                    LOG_ALWAYS_FATAL("Transaction callback called more than once. SurfaceControls: "
                                     "%s",
                                     stream.str().c_str());
                }
                callback(callbackContext, latchTime, presentFence, stats);
                called = true;
            };

    const auto& surfaceControls =
            mListenerCallbacks[TransactionCompletedListener::getIInstance()].surfaceControls;