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

Commit ab6dc5c5 authored by Vishnu Nair's avatar Vishnu Nair
Browse files

libgui: Generate transaction ids for all transactions

Test: presubmit
Bug: 200284593
Change-Id: Ic604415cb97228bed6d5b137424b50f461f01038
parent 302d8d4b
Loading
Loading
Loading
Loading
+9 −8
Original line number Diff line number Diff line
@@ -62,6 +62,14 @@ using ui::ColorMode;

ANDROID_SINGLETON_STATIC_INSTANCE(ComposerService);

namespace {
// Initialize transaction id counter used to generate transaction ids
std::atomic<uint32_t> idCounter = 0;
int64_t generateId() {
    return (((int64_t)getpid()) << 32) | ++idCounter;
}
} // namespace

ComposerService::ComposerService()
: Singleton<ComposerService>() {
    Mutex::Autolock _l(mLock);
@@ -535,10 +543,6 @@ void removeDeadBufferCallback(void* /*context*/, uint64_t graphicBufferId) {

// ---------------------------------------------------------------------------

// Initialize transaction id counter used to generate transaction ids
// Transactions will start counting at 1, 0 is used for invalid transactions
std::atomic<uint32_t> SurfaceComposerClient::Transaction::idCounter = 1;

SurfaceComposerClient::Transaction::Transaction() {
    mId = generateId();
}
@@ -570,9 +574,6 @@ SurfaceComposerClient::Transaction::createFromParcel(const Parcel* parcel) {
    return nullptr;
}

int64_t SurfaceComposerClient::Transaction::generateId() {
    return (((int64_t)getpid()) << 32) | idCounter++;
}

status_t SurfaceComposerClient::Transaction::readFromParcel(const Parcel* parcel) {
    const uint32_t forceSynchronous = parcel->readUint32();
@@ -825,7 +826,7 @@ void SurfaceComposerClient::doUncacheBufferTransaction(uint64_t cacheId) {

    sp<IBinder> applyToken = IInterface::asBinder(TransactionCompletedListener::getIInstance());
    sf->setTransactionState(FrameTimelineInfo{}, {}, {}, 0, applyToken, {}, systemTime(), true,
                            uncacheBuffer, false, {}, 0 /* Undefined transactionId */);
                            uncacheBuffer, false, {}, generateId());
}

void SurfaceComposerClient::Transaction::cacheBuffers() {
+0 −2
Original line number Diff line number Diff line
@@ -366,8 +366,6 @@ public:

    class Transaction : public Parcelable {
    private:
        static std::atomic<uint32_t> idCounter;
        int64_t generateId();
        void releaseBufferIfOverwriting(const layer_state_t& state);

    protected: