diff options
Diffstat (limited to 'sdm/libs/hwc2/hwc_display.cpp')
-rw-r--r-- | sdm/libs/hwc2/hwc_display.cpp | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/sdm/libs/hwc2/hwc_display.cpp b/sdm/libs/hwc2/hwc_display.cpp index c33fc617..299aad76 100644 --- a/sdm/libs/hwc2/hwc_display.cpp +++ b/sdm/libs/hwc2/hwc_display.cpp @@ -782,9 +782,14 @@ void HWCDisplay::BuildLayerStack() { layer_stack_.layers.push_back(layer); } + // If layer stack needs Client composition, HWC display gets into InternalValidate state. If + // validation gets reset by any other thread in this state, enforce Geometry change to ensure + // that Client target gets composed by SF. + bool enforce_geometry_change = (validate_state_ == kInternalValidate) && !validated_; + // TODO(user): Set correctly when SDM supports geometry_changes as bitmask layer_stack_.flags.geometry_changed = UINT32((geometry_changes_ || - geometry_changes_on_doze_suspend_) > 0); + geometry_changes_on_doze_suspend_) > 0) || enforce_geometry_change; layer_stack_.flags.config_changed = !validated_; // Append client target to the layer stack |