summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Wale Ogunwale <ogunwale@google.com> 2015-09-30 09:19:28 -0700
committer Wale Ogunwale <ogunwale@google.com> 2015-09-30 10:27:08 -0700
commite7bf46b7c2222e81b43702450baf5009f7bf46a9 (patch)
treea63dc8e407b1152f8ef727a7c60011bda802c5c7
parentb186388b673035f3a19bcc5d6f9dd8545549a224 (diff)
Don't make surface opaque when resizing window
This helps reduce some of the artifacts shown in areas the app isn't drawing content when resizing using the docked divider. Bug: 24507122 Change-Id: I08a2c3ccd5cb5366c8278f62a5808b12ca09154d
-rw-r--r--services/core/java/com/android/server/wm/WindowStateAnimator.java14
1 files changed, 9 insertions, 5 deletions
diff --git a/services/core/java/com/android/server/wm/WindowStateAnimator.java b/services/core/java/com/android/server/wm/WindowStateAnimator.java
index 0b9f2c634db8..a32b17139bb3 100644
--- a/services/core/java/com/android/server/wm/WindowStateAnimator.java
+++ b/services/core/java/com/android/server/wm/WindowStateAnimator.java
@@ -16,6 +16,7 @@
package com.android.server.wm;
+import static android.view.WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED;
import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION_STARTING;
import static com.android.server.wm.WindowManagerService.DEBUG_ANIM;
import static com.android.server.wm.WindowManagerService.DEBUG_LAYERS;
@@ -868,14 +869,18 @@ class WindowStateAnimator {
mSurfaceW = width;
mSurfaceH = height;
- final boolean isHwAccelerated = (attrs.flags &
- WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED) != 0;
+ final boolean isHwAccelerated = (attrs.flags & FLAG_HARDWARE_ACCELERATED) != 0;
final int format = isHwAccelerated ? PixelFormat.TRANSLUCENT : attrs.format;
if (!PixelFormat.formatHasAlpha(attrs.format)
+ // Don't make surface with surfaceInsets opaque as they display a
+ // translucent shadow.
&& attrs.surfaceInsets.left == 0
&& attrs.surfaceInsets.top == 0
&& attrs.surfaceInsets.right == 0
- && attrs.surfaceInsets.bottom == 0) {
+ && attrs.surfaceInsets.bottom == 0
+ // Don't make surface opaque when resizing to reduce the amount of
+ // artifacts shown in areas the app isn't drawing content to.
+ && !w.isDragResizing()) {
flags |= SurfaceControl.OPAQUE;
}
@@ -1713,8 +1718,7 @@ class WindowStateAnimator {
return false;
}
final LayoutParams attrs = mWin.getAttrs();
- final boolean isHwAccelerated = (attrs.flags &
- WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED) != 0;
+ final boolean isHwAccelerated = (attrs.flags & FLAG_HARDWARE_ACCELERATED) != 0;
final int format = isHwAccelerated ? PixelFormat.TRANSLUCENT : attrs.format;
if (format == mSurfaceFormat) {
setOpaqueLocked(!PixelFormat.formatHasAlpha(attrs.format));