Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f5e44fca authored by Riddle Hsu's avatar Riddle Hsu
Browse files

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
parent 7dd18dd3
Loading
Loading
Loading
Loading
+7 −4
Original line number Diff line number Diff line
@@ -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() {
+2 −1
Original line number Diff line number Diff line
@@ -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);
+2 −1
Original line number Diff line number Diff line
@@ -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);

+2 −1
Original line number Diff line number Diff line
@@ -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 */);