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

Commit 2d3ee6dd authored by Lloyd Pique's avatar Lloyd Pique
Browse files

SF: libsurfaceflinger_unittest should skip SF ctor

This reduces the cost of constructing a SurfaceFlinger instance for each
test, but it means the tests must take care to set up all internal state
that is needed for each test.

[Test execution time reduced from 6.1 to 3.1ms]

Test: libsurfaceflinger_unittest passes on Pixel XL
Bug: 74827900
Change-Id: I7eed4fd274cae521fe0f22b655cf3343cee66342
(cherry picked from commit ac648ee7)
parent bc79209c
Loading
Loading
Loading
Loading
+4 −2
Original line number Original line Diff line number Diff line
@@ -163,7 +163,7 @@ SurfaceFlingerBE::SurfaceFlingerBE()
        mComposerSequenceId(0) {
        mComposerSequenceId(0) {
}
}


SurfaceFlinger::SurfaceFlinger()
SurfaceFlinger::SurfaceFlinger(SurfaceFlinger::SkipInitializationTag)
      : BnSurfaceComposer(),
      : BnSurfaceComposer(),
        mTransactionFlags(0),
        mTransactionFlags(0),
        mTransactionPending(false),
        mTransactionPending(false),
@@ -195,7 +195,9 @@ SurfaceFlinger::SurfaceFlinger()
        mNumLayers(0),
        mNumLayers(0),
        mVrFlingerRequestsDisplay(false),
        mVrFlingerRequestsDisplay(false),
        mMainThreadId(std::this_thread::get_id()),
        mMainThreadId(std::this_thread::get_id()),
        mCreateBufferQueue(&BufferQueue::createBufferQueue) {
        mCreateBufferQueue(&BufferQueue::createBufferQueue) {}

SurfaceFlinger::SurfaceFlinger() : SurfaceFlinger(SkipInitialization) {
    ALOGI("SurfaceFlinger is starting");
    ALOGI("SurfaceFlinger is starting");


    vsyncPhaseOffsetNs = getInt64< ISurfaceFlingerConfigs,
    vsyncPhaseOffsetNs = getInt64< ISurfaceFlingerConfigs,
+3 −0
Original line number Original line Diff line number Diff line
@@ -265,6 +265,9 @@ public:
        return "SurfaceFlinger";
        return "SurfaceFlinger";
    }
    }


    struct SkipInitializationTag {};
    static constexpr SkipInitializationTag SkipInitialization;
    explicit SurfaceFlinger(SkipInitializationTag) ANDROID_API;
    SurfaceFlinger() ANDROID_API;
    SurfaceFlinger() ANDROID_API;


    // must be called before clients can connect
    // must be called before clients can connect
+1 −1
Original line number Original line Diff line number Diff line
@@ -98,7 +98,7 @@ public:
        auto& mutableConfigs() { return this->mConfigs; }
        auto& mutableConfigs() { return this->mConfigs; }
    };
    };


    sp<SurfaceFlinger> mFlinger = new SurfaceFlinger();
    sp<SurfaceFlinger> mFlinger = new SurfaceFlinger(SurfaceFlinger::SkipInitialization);
};
};


} // namespace android
} // namespace android