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

Commit 39dd7ff7 authored by Liz Prucka's avatar Liz Prucka
Browse files

Error fix from enabling Clang thread-safety checks in Cuttlefish

Cherry-pick from ag/29553430

Parent bug: b/353324127. Enabling `thread-safety-reference-return`
to allow developers to utilize Clang thread safety guardrails
(GUARDED_BY, REQUIRES, EXCLUDES).

Added NO_THREAD_SAFETY_ANALYSIS annotations to violating functions.
If this is not desired, please respond with concerns
or preferred fix.

Bug: 354740314
Test: m out/soong/.intermediates/frameworks/native/services/surfaceflinger/tests/unittests/libsurfaceflinger_unittest/android_x86_silvermont/obj/frameworks/native/services/surfaceflinger/tests/unittests/CommitTest.o
Change-Id: I60ce371be590f97ced8f21a5aae3da49faaf64ca
Merged-In: I9be1254c3e2685b0aa950b314c581824f40ce26c
parent 984d7ac0
Loading
Loading
Loading
Loading
+7 −3
Original line number Diff line number Diff line
@@ -516,8 +516,10 @@ public:
        return mFlinger->SurfaceFlinger::getDisplayNativePrimaries(displayToken, primaries);
    }

    auto& getTransactionQueue() { return mFlinger->mTransactionHandler.mLocklessTransactionQueue; }
    auto& getPendingTransactionQueue() {
    auto& getTransactionQueue() NO_THREAD_SAFETY_ANALYSIS {
        return mFlinger->mTransactionHandler.mLocklessTransactionQueue;
    }
    auto& getPendingTransactionQueue() NO_THREAD_SAFETY_ANALYSIS {
        ftl::FakeGuard guard(kMainThreadContext);
        return mFlinger->mTransactionHandler.mPendingTransactionQueues;
    }
@@ -706,7 +708,9 @@ public:

    auto& mutableMinAcquiredBuffers() { return SurfaceFlinger::minAcquiredBuffers; }
    auto& mutableLayersPendingRemoval() { return mFlinger->mLayersPendingRemoval; }
    auto& mutableLayerSnapshotBuilder() { return mFlinger->mLayerSnapshotBuilder; };
    auto& mutableLayerSnapshotBuilder() NO_THREAD_SAFETY_ANALYSIS {
        return mFlinger->mLayerSnapshotBuilder;
    }

    auto fromHandle(const sp<IBinder>& handle) { return LayerHandle::getLayer(handle); }