SurfaceFlinger: Make LayerHistory virtual class
This is a base CL for refresh rate selection algorithm enhancements
by allowing a different implementation of LayerHistory which will be
controlled by a switch.
Test: watch 24fps video and observe refresh rate at 60Hz
Bug: 147516364
Change-Id: Ifd12f6683bc96cd5aba04a8960b9235729820b49
diff --git a/services/surfaceflinger/tests/unittests/TestableScheduler.h b/services/surfaceflinger/tests/unittests/TestableScheduler.h
index fa095aa..a67c24c 100644
--- a/services/surfaceflinger/tests/unittests/TestableScheduler.h
+++ b/services/surfaceflinger/tests/unittests/TestableScheduler.h
@@ -30,14 +30,14 @@
public:
explicit TestableScheduler(const scheduler::RefreshRateConfigs& configs)
: Scheduler([](bool) {}, configs, *this) {
- mLayerHistory.emplace();
+ mLayerHistory = std::make_unique<scheduler::impl::LayerHistory>();
}
TestableScheduler(std::unique_ptr<DispSync> primaryDispSync,
std::unique_ptr<EventControlThread> eventControlThread,
const scheduler::RefreshRateConfigs& configs)
: Scheduler(std::move(primaryDispSync), std::move(eventControlThread), configs, *this) {
- mLayerHistory.emplace();
+ mLayerHistory = std::make_unique<scheduler::impl::LayerHistory>();
}
// Used to inject mock event thread.
@@ -46,7 +46,7 @@
}
size_t layerHistorySize() const NO_THREAD_SAFETY_ANALYSIS {
- return mLayerHistory->mLayerInfos.size();
+ return static_cast<scheduler::impl::LayerHistory*>(mLayerHistory.get())->mLayerInfos.size();
}
/* ------------------------------------------------------------------------
@@ -57,7 +57,9 @@
auto& mutableEventControlThread() { return mEventControlThread; }
auto& mutablePrimaryDispSync() { return mPrimaryDispSync; }
auto& mutableHWVsyncAvailable() { return mHWVsyncAvailable; }
- auto& mutableLayerHistory() { return mLayerHistory; }
+ auto mutableLayerHistory() {
+ return static_cast<scheduler::impl::LayerHistory*>(mLayerHistory.get());
+ }
~TestableScheduler() {
// All these pointer and container clears help ensure that GMock does