diff --git a/services/surfaceflinger/DisplayDevice.cpp b/services/surfaceflinger/DisplayDevice.cpp
index 671382c..950b05e 100644
--- a/services/surfaceflinger/DisplayDevice.cpp
+++ b/services/surfaceflinger/DisplayDevice.cpp
@@ -222,6 +222,7 @@
                                        const hal::VsyncPeriodChangeConstraints& constraints,
                                        hal::VsyncPeriodChangeTimeline& outTimeline) {
     mPendingModeOpt = std::move(desiredMode);
+    mIsModeSetPending = true;
 
     const auto& mode = *mPendingModeOpt->mode.modePtr;
 
@@ -234,22 +235,9 @@
     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 {
@@ -583,14 +571,10 @@
     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) {
