Merge "Change Rounded corner overlay to be in Overlay layer" into tm-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
2c048102db
@@ -27,6 +27,8 @@ import android.view.InputWindowHandle;
|
|||||||
import android.view.SurfaceControl;
|
import android.view.SurfaceControl;
|
||||||
import android.view.WindowManager;
|
import android.view.WindowManager;
|
||||||
|
|
||||||
|
import com.android.server.policy.WindowManagerPolicy;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* An internal implementation of an {@link InputMonitor} that uses a spy window.
|
* An internal implementation of an {@link InputMonitor} that uses a spy window.
|
||||||
*
|
*
|
||||||
@@ -67,7 +69,9 @@ class GestureMonitorSpyWindow {
|
|||||||
|
|
||||||
final SurfaceControl.Transaction t = new SurfaceControl.Transaction();
|
final SurfaceControl.Transaction t = new SurfaceControl.Transaction();
|
||||||
t.setInputWindowInfo(mInputSurface, mWindowHandle);
|
t.setInputWindowInfo(mInputSurface, mWindowHandle);
|
||||||
t.setLayer(mInputSurface, Integer.MAX_VALUE);
|
// Gesture monitor should be above handwriting event surface, hence setting it to
|
||||||
|
// WindowManagerPolicy.INPUT_DISPLAY_OVERLAY_LAYER + 1
|
||||||
|
t.setLayer(mInputSurface, WindowManagerPolicy.INPUT_DISPLAY_OVERLAY_LAYER + 1);
|
||||||
t.setPosition(mInputSurface, 0, 0);
|
t.setPosition(mInputSurface, 0, 0);
|
||||||
t.setCrop(mInputSurface, null /* crop to parent surface */);
|
t.setCrop(mInputSurface, null /* crop to parent surface */);
|
||||||
t.show(mInputSurface);
|
t.show(mInputSurface);
|
||||||
|
|||||||
@@ -27,6 +27,8 @@ import android.view.InputWindowHandle;
|
|||||||
import android.view.SurfaceControl;
|
import android.view.SurfaceControl;
|
||||||
import android.view.WindowManager;
|
import android.view.WindowManager;
|
||||||
|
|
||||||
|
import com.android.server.policy.WindowManagerPolicy;
|
||||||
|
|
||||||
final class HandwritingEventReceiverSurface {
|
final class HandwritingEventReceiverSurface {
|
||||||
|
|
||||||
public static final String TAG = HandwritingEventReceiverSurface.class.getSimpleName();
|
public static final String TAG = HandwritingEventReceiverSurface.class.getSimpleName();
|
||||||
@@ -36,7 +38,8 @@ final class HandwritingEventReceiverSurface {
|
|||||||
// is above gesture monitors, then edge-back and swipe-up gestures won't work when this surface
|
// is above gesture monitors, then edge-back and swipe-up gestures won't work when this surface
|
||||||
// is intercepting.
|
// is intercepting.
|
||||||
// TODO(b/217538817): Specify the ordering in WM by usage.
|
// TODO(b/217538817): Specify the ordering in WM by usage.
|
||||||
private static final int HANDWRITING_SURFACE_LAYER = Integer.MAX_VALUE - 1;
|
private static final int HANDWRITING_SURFACE_LAYER =
|
||||||
|
WindowManagerPolicy.INPUT_DISPLAY_OVERLAY_LAYER;
|
||||||
|
|
||||||
private final InputWindowHandle mWindowHandle;
|
private final InputWindowHandle mWindowHandle;
|
||||||
private final InputChannel mClientChannel;
|
private final InputChannel mClientChannel;
|
||||||
|
|||||||
@@ -156,6 +156,10 @@ public interface WindowManagerPolicy extends WindowManagerPolicyConstants {
|
|||||||
int FINISH_LAYOUT_REDO_ANIM = 0x0008;
|
int FINISH_LAYOUT_REDO_ANIM = 0x0008;
|
||||||
/** Layer for the screen off animation */
|
/** Layer for the screen off animation */
|
||||||
int COLOR_FADE_LAYER = 0x40000001;
|
int COLOR_FADE_LAYER = 0x40000001;
|
||||||
|
/** Layer for Input overlays for capturing inputs for gesture detection, etc. */
|
||||||
|
int INPUT_DISPLAY_OVERLAY_LAYER = 0x7f000000;
|
||||||
|
/** Layer for Screen Decoration: The top most visible layer just below input overlay layers */
|
||||||
|
int SCREEN_DECOR_DISPLAY_OVERLAY_LAYER = INPUT_DISPLAY_OVERLAY_LAYER - 1;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Register shortcuts for window manager to dispatch.
|
* Register shortcuts for window manager to dispatch.
|
||||||
|
|||||||
@@ -5392,6 +5392,16 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp
|
|||||||
return mOverlayLayer;
|
return mOverlayLayer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SurfaceControl[] findRoundedCornerOverlays() {
|
||||||
|
List<SurfaceControl> roundedCornerOverlays = new ArrayList<>();
|
||||||
|
for (WindowToken token : mTokenMap.values()) {
|
||||||
|
if (token.mRoundedCornerOverlay) {
|
||||||
|
roundedCornerOverlays.add(token.mSurfaceControl);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return roundedCornerOverlays.toArray(new SurfaceControl[0]);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Updates the display's system gesture exclusion.
|
* Updates the display's system gesture exclusion.
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -265,7 +265,7 @@ final class InputManagerCallback implements InputManagerService.WindowManagerCal
|
|||||||
.setContainerLayer()
|
.setContainerLayer()
|
||||||
.setName(name)
|
.setName(name)
|
||||||
.setCallsite("createSurfaceForGestureMonitor")
|
.setCallsite("createSurfaceForGestureMonitor")
|
||||||
.setParent(dc.getSurfaceControl())
|
.setParent(dc.getOverlayLayer())
|
||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -164,6 +164,10 @@ class ScreenRotationAnimation {
|
|||||||
.setCaptureSecureLayers(true)
|
.setCaptureSecureLayers(true)
|
||||||
.setAllowProtected(true)
|
.setAllowProtected(true)
|
||||||
.setSourceCrop(new Rect(0, 0, width, height))
|
.setSourceCrop(new Rect(0, 0, width, height))
|
||||||
|
// Exclude rounded corner overlay from screenshot buffer. Rounded
|
||||||
|
// corner overlay windows are un-rotated during rotation animation
|
||||||
|
// for a seamless transition.
|
||||||
|
.setExcludeLayers(displayContent.findRoundedCornerOverlays())
|
||||||
.build();
|
.build();
|
||||||
SurfaceControl.ScreenshotHardwareBuffer screenshotBuffer =
|
SurfaceControl.ScreenshotHardwareBuffer screenshotBuffer =
|
||||||
SurfaceControl.captureLayers(args);
|
SurfaceControl.captureLayers(args);
|
||||||
|
|||||||
@@ -8215,7 +8215,7 @@ public class WindowManagerService extends IWindowManager.Stub
|
|||||||
.setContainerLayer()
|
.setContainerLayer()
|
||||||
.setName("IME Handwriting Surface")
|
.setName("IME Handwriting Surface")
|
||||||
.setCallsite("getHandwritingSurfaceForDisplay")
|
.setCallsite("getHandwritingSurfaceForDisplay")
|
||||||
.setParent(dc.getSurfaceControl())
|
.setParent(dc.getOverlayLayer())
|
||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -368,7 +368,7 @@ class WindowToken extends WindowContainer<WindowState> {
|
|||||||
super.assignRelativeLayer(t,
|
super.assignRelativeLayer(t,
|
||||||
mDisplayContent.getDefaultTaskDisplayArea().getSplitScreenDividerAnchor(), 1);
|
mDisplayContent.getDefaultTaskDisplayArea().getSplitScreenDividerAnchor(), 1);
|
||||||
} else if (mRoundedCornerOverlay) {
|
} else if (mRoundedCornerOverlay) {
|
||||||
super.assignLayer(t, WindowManagerPolicy.COLOR_FADE_LAYER + 1);
|
super.assignLayer(t, WindowManagerPolicy.SCREEN_DECOR_DISPLAY_OVERLAY_LAYER);
|
||||||
} else {
|
} else {
|
||||||
super.assignLayer(t, layer);
|
super.assignLayer(t, layer);
|
||||||
}
|
}
|
||||||
@@ -378,7 +378,7 @@ class WindowToken extends WindowContainer<WindowState> {
|
|||||||
SurfaceControl.Builder makeSurface() {
|
SurfaceControl.Builder makeSurface() {
|
||||||
final SurfaceControl.Builder builder = super.makeSurface();
|
final SurfaceControl.Builder builder = super.makeSurface();
|
||||||
if (mRoundedCornerOverlay) {
|
if (mRoundedCornerOverlay) {
|
||||||
builder.setParent(null);
|
builder.setParent(getDisplayContent().getOverlayLayer());
|
||||||
}
|
}
|
||||||
return builder;
|
return builder;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user