diff options
author | 2018-01-17 13:42:24 -0800 | |
---|---|---|
committer | 2018-03-19 17:51:33 -0700 | |
commit | ac648ee7ead13b4c23fb0d12e00b7f15f844f04f (patch) | |
tree | dc7911c4c51ff5c8ff3f1df075d1e7b1962cd9a3 | |
parent | a618d855a2c1192c3817863b373a9cbfcba3ffbb (diff) |
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
-rw-r--r-- | services/surfaceflinger/SurfaceFlinger.cpp | 6 | ||||
-rw-r--r-- | services/surfaceflinger/SurfaceFlinger.h | 3 | ||||
-rw-r--r-- | services/surfaceflinger/tests/unittests/TestableSurfaceFlinger.h | 2 |
3 files changed, 8 insertions, 3 deletions
diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp index cb410a14e1..db472a7396 100644 --- a/services/surfaceflinger/SurfaceFlinger.cpp +++ b/services/surfaceflinger/SurfaceFlinger.cpp @@ -162,7 +162,7 @@ SurfaceFlingerBE::SurfaceFlingerBE() mComposerSequenceId(0) { } -SurfaceFlinger::SurfaceFlinger() +SurfaceFlinger::SurfaceFlinger(SurfaceFlinger::SkipInitializationTag) : BnSurfaceComposer(), mTransactionFlags(0), mTransactionPending(false), @@ -194,7 +194,9 @@ SurfaceFlinger::SurfaceFlinger() mNumLayers(0), mVrFlingerRequestsDisplay(false), mMainThreadId(std::this_thread::get_id()), - mCreateBufferQueue(&BufferQueue::createBufferQueue) { + mCreateBufferQueue(&BufferQueue::createBufferQueue) {} + +SurfaceFlinger::SurfaceFlinger() : SurfaceFlinger(SkipInitialization) { ALOGI("SurfaceFlinger is starting"); vsyncPhaseOffsetNs = getInt64< ISurfaceFlingerConfigs, diff --git a/services/surfaceflinger/SurfaceFlinger.h b/services/surfaceflinger/SurfaceFlinger.h index 392acaa0a6..db541fe747 100644 --- a/services/surfaceflinger/SurfaceFlinger.h +++ b/services/surfaceflinger/SurfaceFlinger.h @@ -265,6 +265,9 @@ public: return "SurfaceFlinger"; } + struct SkipInitializationTag {}; + static constexpr SkipInitializationTag SkipInitialization; + explicit SurfaceFlinger(SkipInitializationTag) ANDROID_API; SurfaceFlinger() ANDROID_API; // must be called before clients can connect diff --git a/services/surfaceflinger/tests/unittests/TestableSurfaceFlinger.h b/services/surfaceflinger/tests/unittests/TestableSurfaceFlinger.h index 067b09ad02..3e58eb8813 100644 --- a/services/surfaceflinger/tests/unittests/TestableSurfaceFlinger.h +++ b/services/surfaceflinger/tests/unittests/TestableSurfaceFlinger.h @@ -98,7 +98,7 @@ public: auto& mutableConfigs() { return this->mConfigs; } }; - sp<SurfaceFlinger> mFlinger = new SurfaceFlinger(); + sp<SurfaceFlinger> mFlinger = new SurfaceFlinger(SurfaceFlinger::SkipInitialization); }; } // namespace android |