diff options
Diffstat (limited to 'libhwc2.1/libdisplayinterface')
-rw-r--r-- | libhwc2.1/libdisplayinterface/ExynosDisplayDrmInterfaceModule.cpp | 9 | ||||
-rw-r--r-- | libhwc2.1/libdisplayinterface/ExynosDisplayDrmInterfaceModule.h | 7 |
2 files changed, 11 insertions, 5 deletions
diff --git a/libhwc2.1/libdisplayinterface/ExynosDisplayDrmInterfaceModule.cpp b/libhwc2.1/libdisplayinterface/ExynosDisplayDrmInterfaceModule.cpp index 4e1973c..b68f448 100644 --- a/libhwc2.1/libdisplayinterface/ExynosDisplayDrmInterfaceModule.cpp +++ b/libhwc2.1/libdisplayinterface/ExynosDisplayDrmInterfaceModule.cpp @@ -419,7 +419,9 @@ int32_t ExynosDisplayDrmInterfaceModule::setDisplayColorBlob( ExynosDisplayDrmInterface::DrmModeAtomicReq &drmReq) { /* dirty bit is valid only if enable is true */ - if (!prop.id() || (stage.enable && !stage.dirty)) + if (!prop.id()) + return NO_ERROR; + if (!mForceDisplayColorSetting && stage.enable && !stage.dirty) return NO_ERROR; int32_t ret = 0; @@ -478,8 +480,9 @@ int32_t ExynosDisplayDrmInterfaceModule::setDisplayColorBlob( int32_t ExynosDisplayDrmInterfaceModule::setDisplayColorSetting( ExynosDisplayDrmInterface::DrmModeAtomicReq &drmReq) { - if ((mColorSettingChanged == false) || - (isPrimary() == false)) + if (isPrimary() == false) + return NO_ERROR; + if (!mForceDisplayColorSetting && !mColorSettingChanged) return NO_ERROR; ExynosPrimaryDisplayModule* display = diff --git a/libhwc2.1/libdisplayinterface/ExynosDisplayDrmInterfaceModule.h b/libhwc2.1/libdisplayinterface/ExynosDisplayDrmInterfaceModule.h index aa35ef1..36efc8c 100644 --- a/libhwc2.1/libdisplayinterface/ExynosDisplayDrmInterfaceModule.h +++ b/libhwc2.1/libdisplayinterface/ExynosDisplayDrmInterfaceModule.h @@ -35,8 +35,10 @@ class ExynosDisplayDrmInterfaceModule : public ExynosDisplayDrmInterface { ExynosDisplayDrmInterface::DrmModeAtomicReq &drmReq, const std::unique_ptr<DrmPlane> &plane, const exynos_win_config_data &config); - void setColorSettingChanged(bool changed) { - mColorSettingChanged = changed; }; + void setColorSettingChanged(bool changed, bool forceDisplay = false) { + mColorSettingChanged = changed; + mForceDisplayColorSetting = forceDisplay; + }; void destroyOldBlobs(std::vector<uint32_t> &oldBlobs); int32_t createCgcBlobFromIDqe(const IDisplayColorGS101::IDqe &dqe, @@ -132,6 +134,7 @@ class ExynosDisplayDrmInterfaceModule : public ExynosDisplayDrmInterface { mOldDppBlobs.emplace_back(mDrmDevice, planes[ix]->id()); }; bool mColorSettingChanged = false; + bool mForceDisplayColorSetting = false; enum Bpc_Type { BPC_UNSPECIFIED = 0, BPC_8, |