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

Commit 0111667c authored by Andrii Kulian's avatar Andrii Kulian Committed by android-build-merger
Browse files

Merge "Track app visibility updates on the client" into oc-mr1-dev

am: 0d008e32

Change-Id: Iaa4ef63044a5e20b5886b47a33380c33d2668442
parents b32f14c2 0d008e32
Loading
Loading
Loading
Loading
+9 −1
Original line number Diff line number Diff line
@@ -259,6 +259,9 @@ public final class ViewRootImpl implements ViewParent,
    // visibility to control drawing. The decor view visibility will get adjusted when the app get
    // stopped and that's when the app will stop drawing further frames.
    private boolean mForceDecorViewVisibility = false;
    // Used for tracking app visibility updates separately in case we get double change. This will
    // make sure that we always call relayout for the corresponding window.
    private boolean mAppVisibilityChanged;
    int mOrigWindowType = -1;

    /** Whether the window had focus during the most recent traversal. */
@@ -1058,6 +1061,7 @@ public final class ViewRootImpl implements ViewParent,
    void handleAppVisibility(boolean visible) {
        if (mAppVisible != visible) {
            mAppVisible = visible;
            mAppVisibilityChanged = true;
            scheduleTraversals();
            if (!mAppVisible) {
                WindowManagerGlobal.trimForeground();
@@ -1600,7 +1604,11 @@ public final class ViewRootImpl implements ViewParent,

        final int viewVisibility = getHostVisibility();
        final boolean viewVisibilityChanged = !mFirst
                && (mViewVisibility != viewVisibility || mNewSurfaceNeeded);
                && (mViewVisibility != viewVisibility || mNewSurfaceNeeded
                // Also check for possible double visibility update, which will make current
                // viewVisibility value equal to mViewVisibility and we may miss it.
                || mAppVisibilityChanged);
        mAppVisibilityChanged = false;
        final boolean viewUserVisibilityChanged = !mFirst &&
                ((mViewVisibility == View.VISIBLE) != (viewVisibility == View.VISIBLE));