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

Commit 47b657a9 authored by Chavi Weingarten's avatar Chavi Weingarten Committed by Automerger Merge Worker
Browse files

Merge "Call finishDrawing for Windows with visiblity GONE" into rvc-dev am: 2de92373

Change-Id: I1d34d43a3133cb309b90ca709ed75354f44d666e
parents ff30caa0 2de92373
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -2259,7 +2259,7 @@ public class WindowManagerService extends IWindowManager.Stub
            win.mRelayoutCalled = true;
            win.mRelayoutCalled = true;
            win.mInRelayout = true;
            win.mInRelayout = true;


            win.mViewVisibility = viewVisibility;
            win.setViewVisibility(viewVisibility);
            ProtoLog.i(WM_DEBUG_SCREEN_ON,
            ProtoLog.i(WM_DEBUG_SCREEN_ON,
                    "Relayout %s: oldVis=%d newVis=%d. %s", win, oldVisibility,
                    "Relayout %s: oldVis=%d newVis=%d. %s", win, oldVisibility,
                            viewVisibility, new RuntimeException().fillInStackTrace());
                            viewVisibility, new RuntimeException().fillInStackTrace());
+11 −0
Original line number Original line Diff line number Diff line
@@ -5689,6 +5689,17 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP
        return mSession.mPid == pid && isNonToastOrStarting() && isVisibleNow();
        return mSession.mPid == pid && isNonToastOrStarting() && isVisibleNow();
    }
    }


    void setViewVisibility(int viewVisibility) {
        mViewVisibility = viewVisibility;
        // The viewVisibility is set to GONE with a client request to relayout. If this occurs and
        // there's a blast sync transaction waiting, finishDrawing will never be called since the
        // client will not render when visibility is GONE. Therefore, call finishDrawing here to
        // prevent system server from blocking on a window that will not draw.
        if (viewVisibility == View.GONE && mUsingBLASTSyncTransaction) {
            finishDrawing(null);
        }
    }

    SurfaceControl getClientViewRootSurface() {
    SurfaceControl getClientViewRootSurface() {
        return mWinAnimator.getClientViewRootSurface();
        return mWinAnimator.getClientViewRootSurface();
    }
    }