Loading libs/WindowManager/Shell/src/com/android/wm/shell/common/split/SplitWindowManager.java +21 −5 Original line number Diff line number Diff line Loading @@ -39,6 +39,7 @@ import android.view.IWindow; import android.view.LayoutInflater; import android.view.SurfaceControl; import android.view.SurfaceControlViewHost; import android.view.SurfaceSession; import android.view.WindowManager; import android.view.WindowlessWindowManager; Loading @@ -55,6 +56,7 @@ public final class SplitWindowManager extends WindowlessWindowManager { private final ParentContainerCallbacks mParentContainerCallbacks; private Context mContext; private SurfaceControlViewHost mViewHost; private SurfaceControl mLeash; private boolean mResizingSplits; private final String mWindowName; Loading Loading @@ -88,7 +90,15 @@ public final class SplitWindowManager extends WindowlessWindowManager { @Override protected void attachToParentSurface(IWindow window, SurfaceControl.Builder b) { mParentContainerCallbacks.attachToParentSurface(b); // Can't set position for the ViewRootImpl SC directly. Create a leash to manipulate later. final SurfaceControl.Builder builder = new SurfaceControl.Builder(new SurfaceSession()) .setContainerLayer() .setName(TAG) .setHidden(false) .setCallsite("SplitWindowManager#attachToParentSurface"); mParentContainerCallbacks.attachToParentSurface(builder); mLeash = builder.build(); b.setParent(mLeash); } /** Inflates {@link DividerView} on to the root surface. */ Loading Loading @@ -118,11 +128,17 @@ public final class SplitWindowManager extends WindowlessWindowManager { * hierarchy. */ void release() { if (mViewHost == null) return; if (mViewHost != null){ mViewHost.release(); mViewHost = null; } if (mLeash != null) { new SurfaceControl.Transaction().remove(mLeash).apply(); mLeash = null; } } void setResizingSplits(boolean resizing) { if (resizing == mResizingSplits) return; try { Loading @@ -139,6 +155,6 @@ public final class SplitWindowManager extends WindowlessWindowManager { */ @Nullable SurfaceControl getSurfaceControl() { return mViewHost == null ? null : getSurfaceControl(mViewHost.getWindowToken()); return mLeash; } } libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java +1 −1 Original line number Diff line number Diff line Loading @@ -156,7 +156,7 @@ class StageCoordinator implements SplitLayout.LayoutChangeListener, } void setSideStageVisibility(boolean visible) { if (!mSideStageListener.mVisible == visible) return; if (mSideStageListener.mVisible == visible) return; final WindowContainerTransaction wct = new WindowContainerTransaction(); mSideStage.setVisibility(visible, wct); Loading Loading
libs/WindowManager/Shell/src/com/android/wm/shell/common/split/SplitWindowManager.java +21 −5 Original line number Diff line number Diff line Loading @@ -39,6 +39,7 @@ import android.view.IWindow; import android.view.LayoutInflater; import android.view.SurfaceControl; import android.view.SurfaceControlViewHost; import android.view.SurfaceSession; import android.view.WindowManager; import android.view.WindowlessWindowManager; Loading @@ -55,6 +56,7 @@ public final class SplitWindowManager extends WindowlessWindowManager { private final ParentContainerCallbacks mParentContainerCallbacks; private Context mContext; private SurfaceControlViewHost mViewHost; private SurfaceControl mLeash; private boolean mResizingSplits; private final String mWindowName; Loading Loading @@ -88,7 +90,15 @@ public final class SplitWindowManager extends WindowlessWindowManager { @Override protected void attachToParentSurface(IWindow window, SurfaceControl.Builder b) { mParentContainerCallbacks.attachToParentSurface(b); // Can't set position for the ViewRootImpl SC directly. Create a leash to manipulate later. final SurfaceControl.Builder builder = new SurfaceControl.Builder(new SurfaceSession()) .setContainerLayer() .setName(TAG) .setHidden(false) .setCallsite("SplitWindowManager#attachToParentSurface"); mParentContainerCallbacks.attachToParentSurface(builder); mLeash = builder.build(); b.setParent(mLeash); } /** Inflates {@link DividerView} on to the root surface. */ Loading Loading @@ -118,11 +128,17 @@ public final class SplitWindowManager extends WindowlessWindowManager { * hierarchy. */ void release() { if (mViewHost == null) return; if (mViewHost != null){ mViewHost.release(); mViewHost = null; } if (mLeash != null) { new SurfaceControl.Transaction().remove(mLeash).apply(); mLeash = null; } } void setResizingSplits(boolean resizing) { if (resizing == mResizingSplits) return; try { Loading @@ -139,6 +155,6 @@ public final class SplitWindowManager extends WindowlessWindowManager { */ @Nullable SurfaceControl getSurfaceControl() { return mViewHost == null ? null : getSurfaceControl(mViewHost.getWindowToken()); return mLeash; } }
libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java +1 −1 Original line number Diff line number Diff line Loading @@ -156,7 +156,7 @@ class StageCoordinator implements SplitLayout.LayoutChangeListener, } void setSideStageVisibility(boolean visible) { if (!mSideStageListener.mVisible == visible) return; if (mSideStageListener.mVisible == visible) return; final WindowContainerTransaction wct = new WindowContainerTransaction(); mSideStage.setVisibility(visible, wct); Loading