Loading core/java/android/view/SurfaceControlViewHost.java +0 −2 Original line number Diff line number Diff line Loading @@ -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(); } Loading @@ -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(); } Loading core/java/android/view/WindowlessWindowManager.java +19 −7 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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); } Loading @@ -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 & Loading @@ -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; Loading Loading @@ -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) { Loading Loading @@ -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(); Loading libs/WindowManager/Shell/src/com/android/wm/shell/common/SystemWindows.java +31 −1 Original line number Diff line number Diff line Loading @@ -40,9 +40,11 @@ import android.view.IWindowSessionCallback; import android.view.InsetsSourceControl; import android.view.InsetsState; import android.view.SurfaceControl; import android.view.SurfaceSession; import android.view.SurfaceControlViewHost; import android.view.View; import android.view.ViewGroup; import android.view.ViewRootImpl; import android.view.WindowManager; import android.view.WindowlessWindowManager; import android.window.ClientWindowFrames; Loading Loading @@ -251,6 +253,8 @@ public class SystemWindows { public class SysUiWindowManager extends WindowlessWindowManager { final int mDisplayId; ContainerWindow mContainerWindow; final HashMap<IBinder, SurfaceControl> mLeashForWindow = new HashMap<IBinder, SurfaceControl>(); public SysUiWindowManager(int displayId, Context ctx, SurfaceControl rootSurface, ContainerWindow container) { super(ctx.getResources().getConfiguration(), rootSurface, null /* hostInputToken */); Loading @@ -263,7 +267,33 @@ public class SystemWindows { } SurfaceControl getSurfaceControlForWindow(View rootView) { return getSurfaceControl(rootView); synchronized (this) { return mLeashForWindow.get(getWindowBinder(rootView)); } } protected void attachToParentSurface(IWindow window, SurfaceControl.Builder b) { SurfaceControl leash = new SurfaceControl.Builder(new SurfaceSession()) .setContainerLayer() .setName("SystemWindowLeash") .setHidden(false) .setParent(mRootSurface) .setCallsite("SysUiWIndowManager#attachToParentSurface").build(); synchronized (this) { mLeashForWindow.put(window.asBinder(), leash); } b.setParent(leash); } @Override public void remove(android.view.IWindow window) throws RemoteException { super.remove(window); synchronized(this) { IBinder token = window.asBinder(); new SurfaceControl.Transaction().remove(mLeashForWindow.get(token)) .apply(); mLeashForWindow.remove(token); } } void setTouchableRegionForWindow(View rootView, Region region) { Loading libs/WindowManager/Shell/src/com/android/wm/shell/common/split/SplitWindowManager.java +1 −1 Original line number Diff line number Diff line Loading @@ -87,7 +87,7 @@ public final class SplitWindowManager extends WindowlessWindowManager { } @Override protected void attachToParentSurface(SurfaceControl.Builder b) { protected void attachToParentSurface(IWindow window, SurfaceControl.Builder b) { mParentContainerCallbacks.attachToParentSurface(b); } Loading libs/WindowManager/Shell/src/com/android/wm/shell/legacysplitscreen/DividerView.java +0 −8 Original line number Diff line number Diff line Loading @@ -862,14 +862,6 @@ public class DividerView extends FrameLayout implements OnTouchListener, * assigned to it. */ private SurfaceControl getWindowSurfaceControl() { final ViewRootImpl root = getViewRootImpl(); if (root == null) { return null; } SurfaceControl out = root.getSurfaceControl(); if (out != null && out.isValid()) { return out; } return mWindowManager.mSystemWindows.getViewSurface(this); } Loading Loading
core/java/android/view/SurfaceControlViewHost.java +0 −2 Original line number Diff line number Diff line Loading @@ -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(); } Loading @@ -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(); } Loading
core/java/android/view/WindowlessWindowManager.java +19 −7 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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); } Loading @@ -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 & Loading @@ -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; Loading Loading @@ -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) { Loading Loading @@ -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(); Loading
libs/WindowManager/Shell/src/com/android/wm/shell/common/SystemWindows.java +31 −1 Original line number Diff line number Diff line Loading @@ -40,9 +40,11 @@ import android.view.IWindowSessionCallback; import android.view.InsetsSourceControl; import android.view.InsetsState; import android.view.SurfaceControl; import android.view.SurfaceSession; import android.view.SurfaceControlViewHost; import android.view.View; import android.view.ViewGroup; import android.view.ViewRootImpl; import android.view.WindowManager; import android.view.WindowlessWindowManager; import android.window.ClientWindowFrames; Loading Loading @@ -251,6 +253,8 @@ public class SystemWindows { public class SysUiWindowManager extends WindowlessWindowManager { final int mDisplayId; ContainerWindow mContainerWindow; final HashMap<IBinder, SurfaceControl> mLeashForWindow = new HashMap<IBinder, SurfaceControl>(); public SysUiWindowManager(int displayId, Context ctx, SurfaceControl rootSurface, ContainerWindow container) { super(ctx.getResources().getConfiguration(), rootSurface, null /* hostInputToken */); Loading @@ -263,7 +267,33 @@ public class SystemWindows { } SurfaceControl getSurfaceControlForWindow(View rootView) { return getSurfaceControl(rootView); synchronized (this) { return mLeashForWindow.get(getWindowBinder(rootView)); } } protected void attachToParentSurface(IWindow window, SurfaceControl.Builder b) { SurfaceControl leash = new SurfaceControl.Builder(new SurfaceSession()) .setContainerLayer() .setName("SystemWindowLeash") .setHidden(false) .setParent(mRootSurface) .setCallsite("SysUiWIndowManager#attachToParentSurface").build(); synchronized (this) { mLeashForWindow.put(window.asBinder(), leash); } b.setParent(leash); } @Override public void remove(android.view.IWindow window) throws RemoteException { super.remove(window); synchronized(this) { IBinder token = window.asBinder(); new SurfaceControl.Transaction().remove(mLeashForWindow.get(token)) .apply(); mLeashForWindow.remove(token); } } void setTouchableRegionForWindow(View rootView, Region region) { Loading
libs/WindowManager/Shell/src/com/android/wm/shell/common/split/SplitWindowManager.java +1 −1 Original line number Diff line number Diff line Loading @@ -87,7 +87,7 @@ public final class SplitWindowManager extends WindowlessWindowManager { } @Override protected void attachToParentSurface(SurfaceControl.Builder b) { protected void attachToParentSurface(IWindow window, SurfaceControl.Builder b) { mParentContainerCallbacks.attachToParentSurface(b); } Loading
libs/WindowManager/Shell/src/com/android/wm/shell/legacysplitscreen/DividerView.java +0 −8 Original line number Diff line number Diff line Loading @@ -862,14 +862,6 @@ public class DividerView extends FrameLayout implements OnTouchListener, * assigned to it. */ private SurfaceControl getWindowSurfaceControl() { final ViewRootImpl root = getViewRootImpl(); if (root == null) { return null; } SurfaceControl out = root.getSurfaceControl(); if (out != null && out.isValid()) { return out; } return mWindowManager.mSystemWindows.getViewSurface(this); } Loading