diff options
Diffstat (limited to 'core/java/android')
| -rw-r--r-- | core/java/android/view/SurfaceControlViewHost.java | 2 | ||||
| -rw-r--r-- | core/java/android/view/WindowlessWindowManager.java | 26 |
2 files changed, 19 insertions, 9 deletions
diff --git a/core/java/android/view/SurfaceControlViewHost.java b/core/java/android/view/SurfaceControlViewHost.java index f01964822897..18029af6a85e 100644 --- a/core/java/android/view/SurfaceControlViewHost.java +++ b/core/java/android/view/SurfaceControlViewHost.java @@ -162,7 +162,6 @@ public class SurfaceControlViewHost { @NonNull WindowlessWindowManager wwm, boolean useSfChoreographer) { mWm = wwm; mViewRoot = new ViewRootImpl(c, d, mWm, useSfChoreographer); - mViewRoot.forceDisableBLAST(); mAccessibilityEmbeddedConnection = mViewRoot.getAccessibilityEmbeddedConnection(); } @@ -188,7 +187,6 @@ public class SurfaceControlViewHost { mWm = new WindowlessWindowManager(context.getResources().getConfiguration(), mSurfaceControl, hostToken); mViewRoot = new ViewRootImpl(context, display, mWm); - mViewRoot.forceDisableBLAST(); mAccessibilityEmbeddedConnection = mViewRoot.getAccessibilityEmbeddedConnection(); } diff --git a/core/java/android/view/WindowlessWindowManager.java b/core/java/android/view/WindowlessWindowManager.java index bededa09cfce..3aedda1a6bd3 100644 --- a/core/java/android/view/WindowlessWindowManager.java +++ b/core/java/android/view/WindowlessWindowManager.java @@ -71,7 +71,7 @@ public class WindowlessWindowManager implements IWindowSession { new HashMap<IBinder, ResizeCompleteCallback>(); private final SurfaceSession mSurfaceSession = new SurfaceSession(); - private final SurfaceControl mRootSurface; + protected final SurfaceControl mRootSurface; private final Configuration mConfiguration; private final IWindowSession mRealWm; private final IBinder mHostInputToken; @@ -126,7 +126,7 @@ public class WindowlessWindowManager implements IWindowSession { } } - protected void attachToParentSurface(SurfaceControl.Builder b) { + protected void attachToParentSurface(IWindow window, SurfaceControl.Builder b) { b.setParent(mRootSurface); } @@ -140,10 +140,10 @@ public class WindowlessWindowManager implements IWindowSession { InsetsSourceControl[] outActiveControls) { final SurfaceControl.Builder b = new SurfaceControl.Builder(mSurfaceSession) .setFormat(attrs.format) - .setBufferSize(getSurfaceWidth(attrs), getSurfaceHeight(attrs)) + .setBLASTLayer() .setName(attrs.getTitle().toString()) .setCallsite("WindowlessWindowManager.addToDisplay"); - attachToParentSurface(b); + attachToParentSurface(window, b); final SurfaceControl sc = b.build(); if (((attrs.inputFeatures & @@ -162,7 +162,8 @@ public class WindowlessWindowManager implements IWindowSession { mStateForWindow.put(window.asBinder(), state); } - final int res = WindowManagerGlobal.ADD_OKAY | WindowManagerGlobal.ADD_FLAG_APP_VISIBLE; + final int res = WindowManagerGlobal.ADD_OKAY | WindowManagerGlobal.ADD_FLAG_APP_VISIBLE | + WindowManagerGlobal.ADD_FLAG_USE_BLAST; // Include whether the window is in touch mode. return isInTouchMode() ? res | WindowManagerGlobal.ADD_FLAG_IN_TOUCH_MODE : res; @@ -222,6 +223,17 @@ public class WindowlessWindowManager implements IWindowSession { return false; } + /** Access to package members for SystemWindow leashing + * @hide + */ + protected IBinder getWindowBinder(View rootView) { + final ViewRootImpl root = rootView.getViewRootImpl(); + if (root == null) { + return null; + } + return root.mWindow.asBinder(); + } + /** @hide */ @Nullable protected SurfaceControl getSurfaceControl(View rootView) { @@ -266,8 +278,8 @@ public class WindowlessWindowManager implements IWindowSession { WindowManager.LayoutParams attrs = state.mParams; if (viewFlags == View.VISIBLE) { - t.setBufferSize(sc, getSurfaceWidth(attrs), getSurfaceHeight(attrs)) - .setOpaque(sc, isOpaque(attrs)).show(sc).apply(); + outSurfaceSize.set(getSurfaceWidth(attrs), getSurfaceHeight(attrs)); + t.setOpaque(sc, isOpaque(attrs)).show(sc).apply(); outSurfaceControl.copyFrom(sc, "WindowlessWindowManager.relayout"); } else { t.hide(sc).apply(); |
