summaryrefslogtreecommitdiff
path: root/services/surfaceflinger/DisplayDevice.cpp
diff options
context:
space:
mode:
author Leon Scroggins <scroggo@google.com> 2023-12-26 20:38:42 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2023-12-26 20:38:42 +0000
commita5643cb05f6d4b5012d443dbdd3077b3fae2bf0c (patch)
tree17431a61669ace2b1b5dfd402158ab75e2a8498c /services/surfaceflinger/DisplayDevice.cpp
parent68f75b87f2ba6492b9f6502a89f47ad20f3136ab (diff)
parent63abc2ba757b4ce008ca50caad8c70c768be7137 (diff)
Merge "Revert "SF: Flow DisplayModeRequest through mode set FSM"" into main
Diffstat (limited to 'services/surfaceflinger/DisplayDevice.cpp')
-rw-r--r--services/surfaceflinger/DisplayDevice.cpp32
1 files changed, 8 insertions, 24 deletions
diff --git a/services/surfaceflinger/DisplayDevice.cpp b/services/surfaceflinger/DisplayDevice.cpp
index 7b0aad7316..799d62c19d 100644
--- a/services/surfaceflinger/DisplayDevice.cpp
+++ b/services/surfaceflinger/DisplayDevice.cpp
@@ -222,6 +222,7 @@ bool DisplayDevice::initiateModeChange(display::DisplayModeRequest&& desiredMode
const hal::VsyncPeriodChangeConstraints& constraints,
hal::VsyncPeriodChangeTimeline& outTimeline) {
mPendingModeOpt = std::move(desiredMode);
+ mIsModeSetPending = true;
const auto& mode = *mPendingModeOpt->mode.modePtr;
@@ -234,22 +235,9 @@ bool DisplayDevice::initiateModeChange(display::DisplayModeRequest&& desiredMode
return true;
}
-auto DisplayDevice::finalizeModeChange() -> ModeChange {
- if (!mPendingModeOpt) return NoModeChange{"No pending mode"};
-
- auto pendingMode = *std::exchange(mPendingModeOpt, std::nullopt);
- auto& pendingModePtr = pendingMode.mode.modePtr;
-
- if (!mRefreshRateSelector->displayModes().contains(pendingModePtr->getId())) {
- return NoModeChange{"Unknown pending mode"};
- }
-
- if (getActiveMode().modePtr->getResolution() != pendingModePtr->getResolution()) {
- return ResolutionChange{std::move(pendingMode)};
- }
-
- setActiveMode(pendingModePtr->getId(), pendingModePtr->getVsyncRate(), pendingMode.mode.fps);
- return RefreshRateChange{std::move(pendingMode)};
+void DisplayDevice::finalizeModeChange(DisplayModeId modeId, Fps vsyncRate, Fps renderFps) {
+ setActiveMode(modeId, vsyncRate, renderFps);
+ mIsModeSetPending = false;
}
nsecs_t DisplayDevice::getVsyncPeriodFromHWC() const {
@@ -587,14 +575,10 @@ auto DisplayDevice::getDesiredMode() const -> DisplayModeRequestOpt {
return mDesiredModeOpt;
}
-auto DisplayDevice::takeDesiredMode() -> DisplayModeRequestOpt {
- DisplayModeRequestOpt desiredModeOpt;
- {
- std::scoped_lock lock(mDesiredModeLock);
- std::swap(mDesiredModeOpt, desiredModeOpt);
- mHasDesiredModeTrace = false;
- }
- return desiredModeOpt;
+void DisplayDevice::clearDesiredMode() {
+ std::scoped_lock lock(mDesiredModeLock);
+ mDesiredModeOpt.reset();
+ mHasDesiredModeTrace = false;
}
void DisplayDevice::adjustRefreshRate(Fps pacesetterDisplayRefreshRate) {