sdm: Move display state and input validation in appropriate place

1. Perform display specific settings only if the display state and
   input parameters are valid.
2. Set and reset pending_commit on prepare and commit respectively.

Change-Id: I1f2093f6a24e7ee115dd01da6796f78af618bc02
CRs-Fixed: 1005180
diff --git a/sdm/libs/core/display_base.cpp b/sdm/libs/core/display_base.cpp
index 361ded8..0f39cb0 100644
--- a/sdm/libs/core/display_base.cpp
+++ b/sdm/libs/core/display_base.cpp
@@ -180,27 +180,26 @@
 
 DisplayError DisplayBase::Prepare(LayerStack *layer_stack) {
   SCOPE_LOCK(locker_);
+
+  if (!active_) {
+    return kErrorPermission;
+  }
+
+  if (!layer_stack) {
+    return kErrorParameters;
+  }
+
   return PrepareLocked(layer_stack);
 }
 
 DisplayError DisplayBase::PrepareLocked(LayerStack *layer_stack) {
   DisplayError error = kErrorNone;
 
-  if (!layer_stack) {
-    return kErrorParameters;
-  }
-
-  pending_commit_ = false;
-
   error = ValidateGPUTarget(layer_stack);
   if (error != kErrorNone) {
     return error;
   }
 
-  if (!active_) {
-    return kErrorPermission;
-  }
-
   if (color_mgr_ && color_mgr_->NeedsPartialUpdateDisable()) {
     DisablePartialUpdateOneFrameLocked();
   }
@@ -254,13 +253,14 @@
 }
 
 DisplayError DisplayBase::Commit(LayerStack *layer_stack) {
-  DisplayError error = kErrorNone;
+  SCOPE_LOCK(locker_);
 
   if (!layer_stack) {
     return kErrorParameters;
   }
 
   if (!active_) {
+    pending_commit_ = false;
     return kErrorPermission;
   }
 
@@ -271,6 +271,12 @@
 
   pending_commit_ = false;
 
+  return CommitLocked(layer_stack);
+}
+
+DisplayError DisplayBase::CommitLocked(LayerStack *layer_stack) {
+  DisplayError error = kErrorNone;
+
   // Layer stack attributes has changed, need to Reconfigure, currently in use for Hybrid Comp
   if (layer_stack->flags.attributes_changed) {
     error = comp_manager_->ReConfigure(display_comp_ctx_, &hw_layers_);
diff --git a/sdm/libs/core/display_base.h b/sdm/libs/core/display_base.h
index d771342..c761d00 100644
--- a/sdm/libs/core/display_base.h
+++ b/sdm/libs/core/display_base.h
@@ -55,7 +55,7 @@
   virtual DisplayError Init();
   virtual DisplayError Deinit();
   DisplayError Prepare(LayerStack *layer_stack) final;
-  virtual DisplayError Commit(LayerStack *layer_stack);
+  DisplayError Commit(LayerStack *layer_stack) final;
   virtual DisplayError Flush();
   virtual DisplayError GetDisplayState(DisplayState *state);
   virtual DisplayError GetNumVariableInfoConfigs(uint32_t *count);
@@ -88,6 +88,7 @@
 
  protected:
   virtual DisplayError PrepareLocked(LayerStack *layer_stack);
+  virtual DisplayError CommitLocked(LayerStack *layer_stack);
   virtual DisplayError SetActiveConfigLocked(uint32_t index);
   virtual DisplayError SetActiveConfigLocked(DisplayConfigVariableInfo *variable_info) {
     return kErrorNotSupported;
diff --git a/sdm/libs/core/display_hdmi.cpp b/sdm/libs/core/display_hdmi.cpp
index 9a7f46a..c932975 100644
--- a/sdm/libs/core/display_hdmi.cpp
+++ b/sdm/libs/core/display_hdmi.cpp
@@ -112,11 +112,6 @@
   return DisplayBase::PrepareLocked(layer_stack);
 }
 
-DisplayError DisplayHDMI::Commit(LayerStack *layer_stack) {
-  SCOPE_LOCK(locker_);
-  return DisplayBase::Commit(layer_stack);
-}
-
 DisplayError DisplayHDMI::Flush() {
   SCOPE_LOCK(locker_);
   return DisplayBase::Flush();
diff --git a/sdm/libs/core/display_hdmi.h b/sdm/libs/core/display_hdmi.h
index ad96394..543f81c 100644
--- a/sdm/libs/core/display_hdmi.h
+++ b/sdm/libs/core/display_hdmi.h
@@ -42,7 +42,6 @@
               RotatorInterface *rotator_intf);
   virtual DisplayError Init();
   virtual DisplayError Deinit();
-  virtual DisplayError Commit(LayerStack *layer_stack);
   virtual DisplayError Flush();
   virtual DisplayError GetDisplayState(DisplayState *state);
   virtual DisplayError GetNumVariableInfoConfigs(uint32_t *count);
diff --git a/sdm/libs/core/display_primary.cpp b/sdm/libs/core/display_primary.cpp
index dc87d5c..30922f6 100644
--- a/sdm/libs/core/display_primary.cpp
+++ b/sdm/libs/core/display_primary.cpp
@@ -86,9 +86,9 @@
   return error;
 }
 
-DisplayError DisplayPrimary::Commit(LayerStack *layer_stack) {
-  SCOPE_LOCK(locker_);
+DisplayError DisplayPrimary::CommitLocked(LayerStack *layer_stack) {
   DisplayError error = kErrorNone;
+
   HWPanelInfo panel_info;
   HWDisplayAttributes display_attributes;
   uint32_t active_index = 0;
@@ -100,7 +100,7 @@
 
   bool set_idle_timeout = comp_manager_->CanSetIdleTimeout(display_comp_ctx_);
 
-  error = DisplayBase::Commit(layer_stack);
+  error = DisplayBase::CommitLocked(layer_stack);
   if (error != kErrorNone) {
     return error;
   }
diff --git a/sdm/libs/core/display_primary.h b/sdm/libs/core/display_primary.h
index 09de09a..a699923 100644
--- a/sdm/libs/core/display_primary.h
+++ b/sdm/libs/core/display_primary.h
@@ -41,7 +41,6 @@
                  RotatorInterface *rotator_intf);
   virtual DisplayError Init();
   virtual DisplayError Deinit();
-  virtual DisplayError Commit(LayerStack *layer_stack);
   virtual DisplayError Flush();
   virtual DisplayError GetDisplayState(DisplayState *state);
   virtual DisplayError GetNumVariableInfoConfigs(uint32_t *count);
@@ -70,6 +69,7 @@
   virtual void CECMessage(char *message) { }
 
  private:
+  virtual DisplayError CommitLocked(LayerStack *layer_stack);
   virtual DisplayError ControlPartialUpdateLocked(bool enable, uint32_t *pending);
   virtual DisplayError DisablePartialUpdateOneFrameLocked();
 
diff --git a/sdm/libs/core/display_virtual.cpp b/sdm/libs/core/display_virtual.cpp
index 2d7cd7b..5bd40f7 100644
--- a/sdm/libs/core/display_virtual.cpp
+++ b/sdm/libs/core/display_virtual.cpp
@@ -69,11 +69,6 @@
   return error;
 }
 
-DisplayError DisplayVirtual::Commit(LayerStack *layer_stack) {
-  SCOPE_LOCK(locker_);
-  return DisplayBase::Commit(layer_stack);
-}
-
 DisplayError DisplayVirtual::Flush() {
   SCOPE_LOCK(locker_);
   return DisplayBase::Flush();
diff --git a/sdm/libs/core/display_virtual.h b/sdm/libs/core/display_virtual.h
index 4e26632..e1af95e 100644
--- a/sdm/libs/core/display_virtual.h
+++ b/sdm/libs/core/display_virtual.h
@@ -40,7 +40,6 @@
                  RotatorInterface *rotator_intf);
   virtual DisplayError Init();
   virtual DisplayError Deinit();
-  virtual DisplayError Commit(LayerStack *layer_stack);
   virtual DisplayError Flush();
   virtual DisplayError GetDisplayState(DisplayState *state);
   virtual DisplayError GetNumVariableInfoConfigs(uint32_t *count);