summaryrefslogtreecommitdiff
path: root/core/java
diff options
context:
space:
mode:
authorAdam Powell <adamp@google.com>2016-08-23 00:17:14 +0000
committerandroid-build-merger <android-build-merger@google.com>2016-08-23 00:17:14 +0000
commit02abbe8d4cfcd0cbb1446f52e81f0901d1e9a596 (patch)
tree7f484be0b4a1635ba2ba27afb33b5f80bb789983 /core/java
parent4a273d8bb980a28ef988e51304471e67fb19fa0d (diff)
parent64e1ba4398aad1b08a24b15a1d094eb2e9cc1e61 (diff)
Only dispatch window visibility aggregation for targetSdk >= N
am: 64e1ba4398 Change-Id: Id2d00bc0ae66cdfca11e34b8f1465e4ce19243dc
Diffstat (limited to 'core/java')
-rw-r--r--core/java/android/view/ViewRootImpl.java11
1 files changed, 10 insertions, 1 deletions
diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java
index 4dc1009fe446..7494b94ce713 100644
--- a/core/java/android/view/ViewRootImpl.java
+++ b/core/java/android/view/ViewRootImpl.java
@@ -52,6 +52,7 @@ import android.hardware.input.InputManager;
import android.media.AudioManager;
import android.os.Binder;
import android.os.Build;
+import android.os.Build.VERSION_CODES;
import android.os.Bundle;
import android.os.Debug;
import android.os.Handler;
@@ -1540,7 +1541,15 @@ public final class ViewRootImpl implements ViewParent,
if (viewVisibilityChanged) {
mAttachInfo.mWindowVisibility = viewVisibility;
host.dispatchWindowVisibilityChanged(viewVisibility);
- host.dispatchVisibilityAggregated(viewVisibility == View.VISIBLE);
+
+ // Prior to N we didn't have dispatchVisibilityAggregated to give a more accurate
+ // view into when views are visible to the user or not. ImageView never dealt with
+ // telling its drawable about window visibility, among other things. Some apps cause
+ // an additional crossfade animation when windows become visible if they get this
+ // additional call, so only send it to new apps to avoid new visual jank.
+ if (host.getContext().getApplicationInfo().targetSdkVersion >= VERSION_CODES.N) {
+ host.dispatchVisibilityAggregated(viewVisibility == View.VISIBLE);
+ }
if (viewVisibility != View.VISIBLE || mNewSurfaceNeeded) {
endDragResizing();
destroyHardwareResources();