Get dim bounds after super.prepareSurfaces
The dim state may be active when iterating child windows from super.prepareSurfaces. Bug: 159103089 Test: DimmerTests Change-Id: I9326efa0e5d8f265ae7ec62434b850d43802c34e
This commit is contained in:
@@ -263,16 +263,19 @@ class Dimmer {
|
||||
* {@link WindowContainer#prepareSurfaces}. After calling this, the container should
|
||||
* chain {@link WindowContainer#prepareSurfaces} down to it's children to give them
|
||||
* a chance to request dims to continue.
|
||||
* @return Non-null dim bounds if the dimmer is showing.
|
||||
*/
|
||||
Rect resetDimStates() {
|
||||
void resetDimStates() {
|
||||
if (mDimState == null) {
|
||||
return null;
|
||||
return;
|
||||
}
|
||||
if (!mDimState.mDontReset) {
|
||||
mDimState.mDimming = false;
|
||||
}
|
||||
return mDimState.mDimBounds;
|
||||
}
|
||||
|
||||
/** Returns non-null bounds if the dimmer is showing. */
|
||||
Rect getDimBounds() {
|
||||
return mDimState != null ? mDimState.mDimBounds : null;
|
||||
}
|
||||
|
||||
void dontAnimateExit() {
|
||||
|
||||
@@ -779,8 +779,9 @@ public class DisplayArea<T extends WindowContainer> extends WindowContainer<T> {
|
||||
|
||||
@Override
|
||||
void prepareSurfaces() {
|
||||
final Rect dimBounds = mDimmer.resetDimStates();
|
||||
mDimmer.resetDimStates();
|
||||
super.prepareSurfaces();
|
||||
final Rect dimBounds = mDimmer.getDimBounds();
|
||||
if (dimBounds != null) {
|
||||
// Bounds need to be relative, as the dim layer is a child.
|
||||
getBounds(dimBounds);
|
||||
|
||||
@@ -3253,9 +3253,10 @@ class Task extends TaskFragment {
|
||||
|
||||
@Override
|
||||
void prepareSurfaces() {
|
||||
final Rect dimBounds = mDimmer.resetDimStates();
|
||||
mDimmer.resetDimStates();
|
||||
super.prepareSurfaces();
|
||||
|
||||
final Rect dimBounds = mDimmer.getDimBounds();
|
||||
if (dimBounds != null) {
|
||||
getDimBounds(dimBounds);
|
||||
|
||||
|
||||
@@ -2923,9 +2923,10 @@ class TaskFragment extends WindowContainer<WindowContainer> {
|
||||
return;
|
||||
}
|
||||
|
||||
final Rect dimBounds = mDimmer.resetDimStates();
|
||||
mDimmer.resetDimStates();
|
||||
super.prepareSurfaces();
|
||||
|
||||
final Rect dimBounds = mDimmer.getDimBounds();
|
||||
if (dimBounds != null) {
|
||||
// Bounds need to be relative, as the dim layer is a child.
|
||||
dimBounds.offsetTo(0 /* newLeft */, 0 /* newTop */);
|
||||
|
||||
Reference in New Issue
Block a user