Loading services/surfaceflinger/tests/unittests/SurfaceFlinger_DisplayModeSwitching.cpp +9 −1 Original line number Diff line number Diff line Loading @@ -49,9 +49,17 @@ public: mFlinger.onComposerHalHotplug(PrimaryDisplayVariant::HWC_DISPLAY_ID, Connection::CONNECTED); mFlinger.configureAndCommit(); auto vsyncController = std::make_unique<mock::VsyncController>(); auto vsyncTracker = std::make_shared<mock::VSyncTracker>(); EXPECT_CALL(*vsyncTracker, nextAnticipatedVSyncTimeFrom(_)).WillRepeatedly(Return(0)); EXPECT_CALL(*vsyncTracker, currentPeriod()) .WillRepeatedly(Return( TestableSurfaceFlinger::FakeHwcDisplayInjector::DEFAULT_VSYNC_PERIOD)); mDisplay = PrimaryDisplayVariant::makeFakeExistingDisplayInjector(this) .setRefreshRateSelector(std::move(selectorPtr)) .inject(); .inject(std::move(vsyncController), std::move(vsyncTracker)); // isVsyncPeriodSwitchSupported should return true, otherwise the SF's HWC proxy // will call setActiveConfig instead of setActiveConfigWithConstraints. Loading services/surfaceflinger/tests/unittests/TestableSurfaceFlinger.h +16 −1 Original line number Diff line number Diff line Loading @@ -55,6 +55,12 @@ #include "mock/MockSchedulerCallback.h" #include "mock/system/window/MockNativeWindow.h" #include "Scheduler/VSyncTracker.h" #include "Scheduler/VsyncController.h" #include "mock/MockVSyncDispatch.h" #include "mock/MockVSyncTracker.h" #include "mock/MockVsyncController.h" namespace android { struct DisplayStatInfo; Loading Loading @@ -911,6 +917,13 @@ public: } sp<DisplayDevice> inject() NO_THREAD_SAFETY_ANALYSIS { return inject(std::make_unique<mock::VsyncController>(), std::make_shared<mock::VSyncTracker>()); } sp<DisplayDevice> inject(std::unique_ptr<android::scheduler::VsyncController> controller, std::shared_ptr<android::scheduler::VSyncTracker> tracker) NO_THREAD_SAFETY_ANALYSIS { const auto displayId = mCreationArgs.compositionDisplay->getDisplayId(); auto& modes = mDisplayModes; Loading Loading @@ -975,7 +988,9 @@ public: if (mFlinger.scheduler() && mRegisterDisplay) { mFlinger.scheduler()->registerDisplay(physicalId, display->holdRefreshRateSelector()); display->holdRefreshRateSelector(), std::move(controller), std::move(tracker)); } display->setActiveMode(activeModeId, fps, fps); Loading Loading
services/surfaceflinger/tests/unittests/SurfaceFlinger_DisplayModeSwitching.cpp +9 −1 Original line number Diff line number Diff line Loading @@ -49,9 +49,17 @@ public: mFlinger.onComposerHalHotplug(PrimaryDisplayVariant::HWC_DISPLAY_ID, Connection::CONNECTED); mFlinger.configureAndCommit(); auto vsyncController = std::make_unique<mock::VsyncController>(); auto vsyncTracker = std::make_shared<mock::VSyncTracker>(); EXPECT_CALL(*vsyncTracker, nextAnticipatedVSyncTimeFrom(_)).WillRepeatedly(Return(0)); EXPECT_CALL(*vsyncTracker, currentPeriod()) .WillRepeatedly(Return( TestableSurfaceFlinger::FakeHwcDisplayInjector::DEFAULT_VSYNC_PERIOD)); mDisplay = PrimaryDisplayVariant::makeFakeExistingDisplayInjector(this) .setRefreshRateSelector(std::move(selectorPtr)) .inject(); .inject(std::move(vsyncController), std::move(vsyncTracker)); // isVsyncPeriodSwitchSupported should return true, otherwise the SF's HWC proxy // will call setActiveConfig instead of setActiveConfigWithConstraints. Loading
services/surfaceflinger/tests/unittests/TestableSurfaceFlinger.h +16 −1 Original line number Diff line number Diff line Loading @@ -55,6 +55,12 @@ #include "mock/MockSchedulerCallback.h" #include "mock/system/window/MockNativeWindow.h" #include "Scheduler/VSyncTracker.h" #include "Scheduler/VsyncController.h" #include "mock/MockVSyncDispatch.h" #include "mock/MockVSyncTracker.h" #include "mock/MockVsyncController.h" namespace android { struct DisplayStatInfo; Loading Loading @@ -911,6 +917,13 @@ public: } sp<DisplayDevice> inject() NO_THREAD_SAFETY_ANALYSIS { return inject(std::make_unique<mock::VsyncController>(), std::make_shared<mock::VSyncTracker>()); } sp<DisplayDevice> inject(std::unique_ptr<android::scheduler::VsyncController> controller, std::shared_ptr<android::scheduler::VSyncTracker> tracker) NO_THREAD_SAFETY_ANALYSIS { const auto displayId = mCreationArgs.compositionDisplay->getDisplayId(); auto& modes = mDisplayModes; Loading Loading @@ -975,7 +988,9 @@ public: if (mFlinger.scheduler() && mRegisterDisplay) { mFlinger.scheduler()->registerDisplay(physicalId, display->holdRefreshRateSelector()); display->holdRefreshRateSelector(), std::move(controller), std::move(tracker)); } display->setActiveMode(activeModeId, fps, fps); Loading