sdm: Handle concurrency of LTM and panel mode switch.
Enable PU when panel supports and LTM is not enabled.
Change-Id: I60bdf696e96007145b6be20e26b304f8536b1165
CRs-Fixed: 2564347
diff --git a/sdm/libs/core/display_builtin.cpp b/sdm/libs/core/display_builtin.cpp
index b567a80..4e9e7d1 100644
--- a/sdm/libs/core/display_builtin.cpp
+++ b/sdm/libs/core/display_builtin.cpp
@@ -535,6 +535,12 @@
return kErrorNotSupported;
}
+ if (dpps_info_.disable_pu_ && enable) {
+ // Nothing to be done.
+ DLOGI("partial update is disabled by DPPS for display id = %d", display_id_);
+ return kErrorNotSupported;
+ }
+
*pending = 0;
if (enable == partial_update_control_) {
DLOGI("Same state transition is requested.");
@@ -596,6 +602,7 @@
break;
}
enable = *(reinterpret_cast<bool *>(payload));
+ dpps_info_.disable_pu_ = !enable;
ControlPartialUpdate(enable, &pending);
event_handler_->HandleEvent(kInvalidateDisplay);
event_handler_->Refresh();
diff --git a/sdm/libs/core/display_builtin.h b/sdm/libs/core/display_builtin.h
index b59752e..8329b66 100644
--- a/sdm/libs/core/display_builtin.h
+++ b/sdm/libs/core/display_builtin.h
@@ -39,6 +39,7 @@
void Init(DppsPropIntf *intf, const std::string &panel_name);
void Deinit();
void DppsNotifyOps(enum DppsNotifyOps op, void *payload, size_t size);
+ bool disable_pu_ = false;
private:
const char *kDppsLib_ = "libdpps.so";