diff --git a/sdm/libs/hwc2/hwc_display.cpp b/sdm/libs/hwc2/hwc_display.cpp index 0ce1f1e1..870b8b64 100644 --- a/sdm/libs/hwc2/hwc_display.cpp +++ b/sdm/libs/hwc2/hwc_display.cpp @@ -434,6 +434,8 @@ HWC2::Error HWCDisplay::CreateLayer(hwc2_layer_t *out_layer_id) { *out_layer_id = layer->GetId(); geometry_changes_ |= GeometryChanges::kAdded; validated_ = false; + layer_stack_invalid_ = true; + return HWC2::Error::None; } @@ -466,6 +468,8 @@ HWC2::Error HWCDisplay::DestroyLayer(hwc2_layer_t layer_id) { geometry_changes_ |= GeometryChanges::kRemoved; validated_ = false; + layer_stack_invalid_ = true; + return HWC2::Error::None; } @@ -633,6 +637,8 @@ void HWCDisplay::BuildLayerStack() { } // set secure display SetSecureDisplay(secure_display_active); + + layer_stack_invalid_ = false; } void HWCDisplay::BuildSolidFillStack() { @@ -2040,6 +2046,11 @@ std::string HWCDisplay::Dump() { << std::endl; } + if (layer_stack_invalid_) { + os << "\n Layers added or removed but not reflected to SDM's layer stack yet\n"; + return os.str(); + } + if (color_mode_) { os << "\n----------Color Modes---------\n"; color_mode_->Dump(&os); diff --git a/sdm/libs/hwc2/hwc_display.h b/sdm/libs/hwc2/hwc_display.h index c2519447..a5e14573 100644 --- a/sdm/libs/hwc2/hwc_display.h +++ b/sdm/libs/hwc2/hwc_display.h @@ -257,6 +257,7 @@ class HWCDisplay : public DisplayEventHandler { }; bool validated_ = false; + bool layer_stack_invalid_ = true; CoreInterface *core_intf_ = nullptr; HWCCallbacks *callbacks_ = nullptr; HWCBufferAllocator *buffer_allocator_ = NULL;