Loading services/surfaceflinger/DisplayDevice.cpp +22 −0 Original line number Diff line number Diff line Loading @@ -211,6 +211,7 @@ status_t DisplayDevice::initiateModeChange(const ActiveModeInfo& info, to_string(getId()).c_str()); return BAD_VALUE; } mNumModeSwitchesInPolicy++; mUpcomingActiveMode = info; ATRACE_INT(mActiveModeFPSHwcTrace.c_str(), info.mode->getFps().getIntValue()); return mHwComposer.setActiveModeWithConstraints(getPhysicalId(), info.mode->getHwcId(), Loading Loading @@ -537,6 +538,27 @@ void DisplayDevice::clearDesiredActiveModeState() { mDesiredActiveModeChanged = false; } status_t DisplayDevice::setRefreshRatePolicy( const std::optional<scheduler::RefreshRateConfigs::Policy>& policy, bool overridePolicy) { const auto oldPolicy = mRefreshRateConfigs->getCurrentPolicy(); const status_t setPolicyResult = overridePolicy ? mRefreshRateConfigs->setOverridePolicy(policy) : mRefreshRateConfigs->setDisplayManagerPolicy(*policy); if (setPolicyResult == OK) { const int numModeChanges = mNumModeSwitchesInPolicy.exchange(0); ALOGI("Display %s policy changed\n" "Previous: {%s}\n" "Current: {%s}\n" "%d mode changes were performed under the previous policy", to_string(getId()).c_str(), oldPolicy.toString().c_str(), policy ? policy->toString().c_str() : "null", numModeChanges); } return setPolicyResult; } std::atomic<int32_t> DisplayDeviceState::sNextSequenceId(1); } // namespace android Loading services/surfaceflinger/DisplayDevice.h +6 −0 Original line number Diff line number Diff line Loading @@ -249,6 +249,10 @@ public: nsecs_t getVsyncPeriodFromHWC() const; nsecs_t getRefreshTimestamp() const; status_t setRefreshRatePolicy( const std::optional<scheduler::RefreshRateConfigs::Policy>& policy, bool overridePolicy); // release HWC resources (if any) for removable displays void disconnect(); Loading Loading @@ -303,6 +307,8 @@ private: TracedOrdinal<bool> mDesiredActiveModeChanged GUARDED_BY(mActiveModeLock) = {"DesiredActiveModeChanged", false}; ActiveModeInfo mUpcomingActiveMode GUARDED_BY(kMainThreadContext); std::atomic_int mNumModeSwitchesInPolicy = 0; }; struct DisplayDeviceState { Loading services/surfaceflinger/SurfaceFlinger.cpp +1 −3 Original line number Diff line number Diff line Loading @@ -6913,9 +6913,7 @@ status_t SurfaceFlinger::setDesiredDisplayModeSpecsInternal( return NO_ERROR; } status_t setPolicyResult = overridePolicy ? display->refreshRateConfigs().setOverridePolicy(policy) : display->refreshRateConfigs().setDisplayManagerPolicy(*policy); const status_t setPolicyResult = display->setRefreshRatePolicy(policy, overridePolicy); if (setPolicyResult < 0) { return BAD_VALUE; } Loading Loading
services/surfaceflinger/DisplayDevice.cpp +22 −0 Original line number Diff line number Diff line Loading @@ -211,6 +211,7 @@ status_t DisplayDevice::initiateModeChange(const ActiveModeInfo& info, to_string(getId()).c_str()); return BAD_VALUE; } mNumModeSwitchesInPolicy++; mUpcomingActiveMode = info; ATRACE_INT(mActiveModeFPSHwcTrace.c_str(), info.mode->getFps().getIntValue()); return mHwComposer.setActiveModeWithConstraints(getPhysicalId(), info.mode->getHwcId(), Loading Loading @@ -537,6 +538,27 @@ void DisplayDevice::clearDesiredActiveModeState() { mDesiredActiveModeChanged = false; } status_t DisplayDevice::setRefreshRatePolicy( const std::optional<scheduler::RefreshRateConfigs::Policy>& policy, bool overridePolicy) { const auto oldPolicy = mRefreshRateConfigs->getCurrentPolicy(); const status_t setPolicyResult = overridePolicy ? mRefreshRateConfigs->setOverridePolicy(policy) : mRefreshRateConfigs->setDisplayManagerPolicy(*policy); if (setPolicyResult == OK) { const int numModeChanges = mNumModeSwitchesInPolicy.exchange(0); ALOGI("Display %s policy changed\n" "Previous: {%s}\n" "Current: {%s}\n" "%d mode changes were performed under the previous policy", to_string(getId()).c_str(), oldPolicy.toString().c_str(), policy ? policy->toString().c_str() : "null", numModeChanges); } return setPolicyResult; } std::atomic<int32_t> DisplayDeviceState::sNextSequenceId(1); } // namespace android Loading
services/surfaceflinger/DisplayDevice.h +6 −0 Original line number Diff line number Diff line Loading @@ -249,6 +249,10 @@ public: nsecs_t getVsyncPeriodFromHWC() const; nsecs_t getRefreshTimestamp() const; status_t setRefreshRatePolicy( const std::optional<scheduler::RefreshRateConfigs::Policy>& policy, bool overridePolicy); // release HWC resources (if any) for removable displays void disconnect(); Loading Loading @@ -303,6 +307,8 @@ private: TracedOrdinal<bool> mDesiredActiveModeChanged GUARDED_BY(mActiveModeLock) = {"DesiredActiveModeChanged", false}; ActiveModeInfo mUpcomingActiveMode GUARDED_BY(kMainThreadContext); std::atomic_int mNumModeSwitchesInPolicy = 0; }; struct DisplayDeviceState { Loading
services/surfaceflinger/SurfaceFlinger.cpp +1 −3 Original line number Diff line number Diff line Loading @@ -6913,9 +6913,7 @@ status_t SurfaceFlinger::setDesiredDisplayModeSpecsInternal( return NO_ERROR; } status_t setPolicyResult = overridePolicy ? display->refreshRateConfigs().setOverridePolicy(policy) : display->refreshRateConfigs().setDisplayManagerPolicy(*policy); const status_t setPolicyResult = display->setRefreshRatePolicy(policy, overridePolicy); if (setPolicyResult < 0) { return BAD_VALUE; } Loading