Merge "Track app visibility updates on the client" into oc-mr1-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
0d008e3204
@@ -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));
|
||||
|
||||
|
||||
Reference in New Issue
Block a user