summaryrefslogtreecommitdiff
path: root/libhwc2.1/libdisplayinterface
diff options
context:
space:
mode:
Diffstat (limited to 'libhwc2.1/libdisplayinterface')
-rw-r--r--libhwc2.1/libdisplayinterface/ExynosDisplayDrmInterfaceModule.cpp9
-rw-r--r--libhwc2.1/libdisplayinterface/ExynosDisplayDrmInterfaceModule.h7
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,