sdm: Resource interface change for stop
Pass hw layers for Stop call on resource interface.
This allows RM to complete any required handling
before validating current frame on a given display.
Change-Id: Iba56da9528464a226e747a84183183d84e69c07a
CRs-fixed: 2054566
diff --git a/sdm/include/private/resource_interface.h b/sdm/include/private/resource_interface.h
index f57d760..1e75298 100644
--- a/sdm/include/private/resource_interface.h
+++ b/sdm/include/private/resource_interface.h
@@ -48,7 +48,7 @@
const HWPanelInfo &hw_panel_info,
const HWMixerAttributes &mixer_attributes) = 0;
virtual DisplayError Start(Handle display_ctx) = 0;
- virtual DisplayError Stop(Handle display_ctx) = 0;
+ virtual DisplayError Stop(Handle display_ctx, HWLayers *hw_layers) = 0;
virtual DisplayError Prepare(Handle display_ctx, HWLayers *hw_layers) = 0;
virtual DisplayError PostPrepare(Handle display_ctx, HWLayers *hw_layers) = 0;
virtual DisplayError Commit(Handle display_ctx, HWLayers *hw_layers) = 0;
diff --git a/sdm/libs/core/comp_manager.cpp b/sdm/libs/core/comp_manager.cpp
index f35c1c6..4d25497 100644
--- a/sdm/libs/core/comp_manager.cpp
+++ b/sdm/libs/core/comp_manager.cpp
@@ -289,10 +289,12 @@
}
if (error != kErrorNone) {
+ resource_intf_->Stop(display_resource_ctx, hw_layers);
DLOGE("Composition strategies exhausted for display = %d", display_comp_ctx->display_type);
+ return error;
}
- resource_intf_->Stop(display_resource_ctx);
+ error = resource_intf_->Stop(display_resource_ctx, hw_layers);
return error;
}
@@ -338,7 +340,7 @@
DLOGE("Reconfigure failed for display = %d", display_comp_ctx->display_type);
}
- resource_intf_->Stop(display_resource_ctx);
+ resource_intf_->Stop(display_resource_ctx, hw_layers);
if (error != kErrorNone) {
error = resource_intf_->PostPrepare(display_resource_ctx, hw_layers);
}
diff --git a/sdm/libs/core/resource_default.cpp b/sdm/libs/core/resource_default.cpp
index 8e89784..f8909f4 100644
--- a/sdm/libs/core/resource_default.cpp
+++ b/sdm/libs/core/resource_default.cpp
@@ -212,7 +212,7 @@
return kErrorNone;
}
-DisplayError ResourceDefault::Stop(Handle display_ctx) {
+DisplayError ResourceDefault::Stop(Handle display_ctx, HWLayers *hw_layers) {
locker_.Unlock();
return kErrorNone;
diff --git a/sdm/libs/core/resource_default.h b/sdm/libs/core/resource_default.h
index 76d19f3..a67eb09 100644
--- a/sdm/libs/core/resource_default.h
+++ b/sdm/libs/core/resource_default.h
@@ -50,7 +50,7 @@
const HWPanelInfo &hw_panel_info,
const HWMixerAttributes &mixer_attributes);
virtual DisplayError Start(Handle display_ctx);
- virtual DisplayError Stop(Handle display_ctx);
+ virtual DisplayError Stop(Handle display_ctx, HWLayers *hw_layers);
virtual DisplayError Prepare(Handle display_ctx, HWLayers *hw_layers);
virtual DisplayError PostPrepare(Handle display_ctx, HWLayers *hw_layers);
virtual DisplayError Commit(Handle display_ctx, HWLayers *hw_layers);