diff options
author | TreeHugger Robot <treehugger-gerrit@google.com> | 2022-01-14 02:15:22 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2022-01-14 02:15:22 +0000 |
commit | 446346bc4ed77cc1b48b7bf08686005f2c2b948d (patch) | |
tree | da9197ffc7fd6cb72c444e243ac58acbee5ef16f | |
parent | fe84f243b254142b6bf982265f4e83db0078cb31 (diff) | |
parent | 66a576b409a75e2ce185f5251dbb182689d3455b (diff) | |
download | base-446346bc4ed77cc1b48b7bf08686005f2c2b948d.tar.gz |
Merge "[RESTRICT AUTOMERGE] Dimming on an embedded TaskFragment vs. parent Task" into sc-v2-dev
-rw-r--r-- | services/core/java/com/android/server/wm/Task.java | 1 | ||||
-rw-r--r-- | services/core/java/com/android/server/wm/TaskFragment.java | 30 |
2 files changed, 30 insertions, 1 deletions
diff --git a/services/core/java/com/android/server/wm/Task.java b/services/core/java/com/android/server/wm/Task.java index 2231ebd2fb9e..50a68450b5f2 100644 --- a/services/core/java/com/android/server/wm/Task.java +++ b/services/core/java/com/android/server/wm/Task.java @@ -486,7 +486,6 @@ class Task extends TaskFragment { // root task moves and we in fact do so when moving from full screen to pinned. private boolean mPreserveNonFloatingState = false; - private Dimmer mDimmer = new Dimmer(this); private final Rect mTmpDimBoundsRect = new Rect(); /** @see #setCanAffectSystemUiFlags */ diff --git a/services/core/java/com/android/server/wm/TaskFragment.java b/services/core/java/com/android/server/wm/TaskFragment.java index efd51e99a26a..24b66ca3ac9c 100644 --- a/services/core/java/com/android/server/wm/TaskFragment.java +++ b/services/core/java/com/android/server/wm/TaskFragment.java @@ -162,6 +162,8 @@ class TaskFragment extends WindowContainer<WindowContainer> { */ int mMinHeight; + Dimmer mDimmer = new Dimmer(this); + /** This task fragment will be removed when the cleanup of its children are done. */ private boolean mIsRemovalRequested; @@ -2353,6 +2355,34 @@ class TaskFragment extends WindowContainer<WindowContainer> { } @Override + Dimmer getDimmer() { + // If the window is in an embedded TaskFragment, we want to dim at the TaskFragment. + if (asTask() == null) { + return mDimmer; + } + + return super.getDimmer(); + } + + @Override + void prepareSurfaces() { + if (asTask() != null) { + super.prepareSurfaces(); + return; + } + + mDimmer.resetDimStates(); + super.prepareSurfaces(); + + // Bounds need to be relative, as the dim layer is a child. + final Rect dimBounds = getBounds(); + dimBounds.offsetTo(0 /* newLeft */, 0 /* newTop */); + if (mDimmer.updateDims(getPendingTransaction(), dimBounds)) { + scheduleAnimation(); + } + } + + @Override boolean canBeAnimationTarget() { return true; } |