diff --git a/drmhwctwo.cpp b/drmhwctwo.cpp index 6bab17bf97851fc84549f52f5005d65230b8920d..3ee9f8e007bc8e2f2a531e3e40ab0989c94bee35 100644 --- a/drmhwctwo.cpp +++ b/drmhwctwo.cpp @@ -697,6 +697,7 @@ HWC2::Error DrmHwcTwo::HwcDisplay::ValidateDisplay(uint32_t *num_types, *num_types = 0; *num_requests = 0; size_t avail_planes = primary_planes_.size() + overlay_planes_.size(); + bool comp_failed = false; HWC2::Error ret; @@ -705,8 +706,7 @@ HWC2::Error DrmHwcTwo::HwcDisplay::ValidateDisplay(uint32_t *num_types, ret = CreateComposition(true); if (ret != HWC2::Error::None) - // Assume the test failed due to overlay planes - avail_planes = 1; + comp_failed = true; std::map> z_map; for (std::pair &l : layers_) { @@ -722,7 +722,7 @@ HWC2::Error DrmHwcTwo::HwcDisplay::ValidateDisplay(uint32_t *num_types, avail_planes--; for (std::pair &l : z_map) { - if (!avail_planes--) + if (comp_failed || !avail_planes--) break; l.second->set_validated_type(HWC2::Composition::Device); }