Loading libs/WindowManager/Shell/src/com/android/wm/shell/common/split/SplitDecorManager.java +29 −15 Original line number Diff line number Diff line Loading @@ -124,6 +124,9 @@ public class SplitDecorManager extends WindowlessWindowManager { /** Releases the surfaces for split decor. */ public void release(SurfaceControl.Transaction t) { if (mFadeAnimator != null && mFadeAnimator.isRunning()) { mFadeAnimator.cancel(); } if (mViewHost != null) { mViewHost.release(); mViewHost = null; Loading @@ -139,6 +142,8 @@ public class SplitDecorManager extends WindowlessWindowManager { mHostLeash = null; mIcon = null; mResizingIconView = null; mIsResizing = false; mShown = false; } /** Showing resizing hint. */ Loading Loading @@ -181,13 +186,13 @@ public class SplitDecorManager extends WindowlessWindowManager { if (mFadeAnimator != null && mFadeAnimator.isRunning()) { mFadeAnimator.cancel(); } startFadeAnimation(show, false /* releaseLeash */); startFadeAnimation(show, false /* isResized */); mShown = show; } } /** Stops showing resizing hint. */ public void onResized(Rect newBounds, SurfaceControl.Transaction t) { public void onResized(SurfaceControl.Transaction t) { if (mResizingIconView == null) { return; } Loading @@ -200,7 +205,7 @@ public class SplitDecorManager extends WindowlessWindowManager { mFadeAnimator.addListener(new AnimatorListenerAdapter() { @Override public void onAnimationEnd(Animator animation) { releaseLeash(finishT); releaseDecor(finishT); finishT.apply(); finishT.close(); } Loading @@ -212,22 +217,25 @@ public class SplitDecorManager extends WindowlessWindowManager { mFadeAnimator.cancel(); } if (mShown) { startFadeAnimation(false /* show */, true /* releaseLeash */); mShown = false; startFadeAnimation(false /* show */, true /* isResized */); } else { // Surface is hidden so release it directly. releaseLeash(t); // Decor surface is hidden so release it directly. releaseDecor(t); } } private void startFadeAnimation(boolean show, boolean releaseLeash) { private void startFadeAnimation(boolean show, boolean isResized) { final SurfaceControl.Transaction animT = new SurfaceControl.Transaction(); mFadeAnimator = ValueAnimator.ofFloat(0f, 1f); mFadeAnimator.setDuration(FADE_DURATION); mFadeAnimator.addUpdateListener(valueAnimator-> { final float progress = (float) valueAnimator.getAnimatedValue(); if (mBackgroundLeash != null) { animT.setAlpha(mBackgroundLeash, show ? progress : 1 - progress); } if (mIconLeash != null) { animT.setAlpha(mIconLeash, show ? progress : 1 - progress); } animT.apply(); }); mFadeAnimator.addListener(new AnimatorListenerAdapter() { Loading @@ -241,19 +249,25 @@ public class SplitDecorManager extends WindowlessWindowManager { @Override public void onAnimationEnd(@NonNull Animator animation) { if (!show) { animT.hide(mBackgroundLeash).hide(mIconLeash).apply(); if (mBackgroundLeash != null) { animT.hide(mBackgroundLeash); } if (mIconLeash != null) { animT.hide(mIconLeash); } if (releaseLeash) { releaseLeash(animT); animT.apply(); } if (isResized) { releaseDecor(animT); } animT.apply(); animT.close(); } }); mFadeAnimator.start(); } private void releaseLeash(SurfaceControl.Transaction t) { /** Release or hide decor hint. */ private void releaseDecor(SurfaceControl.Transaction t) { if (mBackgroundLeash != null) { t.remove(mBackgroundLeash); mBackgroundLeash = null; Loading libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java +2 −2 Original line number Diff line number Diff line Loading @@ -1072,8 +1072,8 @@ class StageCoordinator implements SplitLayout.SplitLayoutHandler, mSyncQueue.queue(wct); mSyncQueue.runInSync(t -> { updateSurfaceBounds(layout, t); mMainStage.onResized(getMainStageBounds(), t); mSideStage.onResized(getSideStageBounds(), t); mMainStage.onResized(t); mSideStage.onResized(t); }); mLogger.logResize(mSplitLayout.getDividerPositionAsFraction()); } Loading libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageTaskListener.java +2 −2 Original line number Diff line number Diff line Loading @@ -319,9 +319,9 @@ class StageTaskListener implements ShellTaskOrganizer.TaskListener { } } void onResized(Rect newBounds, SurfaceControl.Transaction t) { void onResized(SurfaceControl.Transaction t) { if (mSplitDecorManager != null) { mSplitDecorManager.onResized(newBounds, t); mSplitDecorManager.onResized(t); } } Loading Loading
libs/WindowManager/Shell/src/com/android/wm/shell/common/split/SplitDecorManager.java +29 −15 Original line number Diff line number Diff line Loading @@ -124,6 +124,9 @@ public class SplitDecorManager extends WindowlessWindowManager { /** Releases the surfaces for split decor. */ public void release(SurfaceControl.Transaction t) { if (mFadeAnimator != null && mFadeAnimator.isRunning()) { mFadeAnimator.cancel(); } if (mViewHost != null) { mViewHost.release(); mViewHost = null; Loading @@ -139,6 +142,8 @@ public class SplitDecorManager extends WindowlessWindowManager { mHostLeash = null; mIcon = null; mResizingIconView = null; mIsResizing = false; mShown = false; } /** Showing resizing hint. */ Loading Loading @@ -181,13 +186,13 @@ public class SplitDecorManager extends WindowlessWindowManager { if (mFadeAnimator != null && mFadeAnimator.isRunning()) { mFadeAnimator.cancel(); } startFadeAnimation(show, false /* releaseLeash */); startFadeAnimation(show, false /* isResized */); mShown = show; } } /** Stops showing resizing hint. */ public void onResized(Rect newBounds, SurfaceControl.Transaction t) { public void onResized(SurfaceControl.Transaction t) { if (mResizingIconView == null) { return; } Loading @@ -200,7 +205,7 @@ public class SplitDecorManager extends WindowlessWindowManager { mFadeAnimator.addListener(new AnimatorListenerAdapter() { @Override public void onAnimationEnd(Animator animation) { releaseLeash(finishT); releaseDecor(finishT); finishT.apply(); finishT.close(); } Loading @@ -212,22 +217,25 @@ public class SplitDecorManager extends WindowlessWindowManager { mFadeAnimator.cancel(); } if (mShown) { startFadeAnimation(false /* show */, true /* releaseLeash */); mShown = false; startFadeAnimation(false /* show */, true /* isResized */); } else { // Surface is hidden so release it directly. releaseLeash(t); // Decor surface is hidden so release it directly. releaseDecor(t); } } private void startFadeAnimation(boolean show, boolean releaseLeash) { private void startFadeAnimation(boolean show, boolean isResized) { final SurfaceControl.Transaction animT = new SurfaceControl.Transaction(); mFadeAnimator = ValueAnimator.ofFloat(0f, 1f); mFadeAnimator.setDuration(FADE_DURATION); mFadeAnimator.addUpdateListener(valueAnimator-> { final float progress = (float) valueAnimator.getAnimatedValue(); if (mBackgroundLeash != null) { animT.setAlpha(mBackgroundLeash, show ? progress : 1 - progress); } if (mIconLeash != null) { animT.setAlpha(mIconLeash, show ? progress : 1 - progress); } animT.apply(); }); mFadeAnimator.addListener(new AnimatorListenerAdapter() { Loading @@ -241,19 +249,25 @@ public class SplitDecorManager extends WindowlessWindowManager { @Override public void onAnimationEnd(@NonNull Animator animation) { if (!show) { animT.hide(mBackgroundLeash).hide(mIconLeash).apply(); if (mBackgroundLeash != null) { animT.hide(mBackgroundLeash); } if (mIconLeash != null) { animT.hide(mIconLeash); } if (releaseLeash) { releaseLeash(animT); animT.apply(); } if (isResized) { releaseDecor(animT); } animT.apply(); animT.close(); } }); mFadeAnimator.start(); } private void releaseLeash(SurfaceControl.Transaction t) { /** Release or hide decor hint. */ private void releaseDecor(SurfaceControl.Transaction t) { if (mBackgroundLeash != null) { t.remove(mBackgroundLeash); mBackgroundLeash = null; Loading
libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java +2 −2 Original line number Diff line number Diff line Loading @@ -1072,8 +1072,8 @@ class StageCoordinator implements SplitLayout.SplitLayoutHandler, mSyncQueue.queue(wct); mSyncQueue.runInSync(t -> { updateSurfaceBounds(layout, t); mMainStage.onResized(getMainStageBounds(), t); mSideStage.onResized(getSideStageBounds(), t); mMainStage.onResized(t); mSideStage.onResized(t); }); mLogger.logResize(mSplitLayout.getDividerPositionAsFraction()); } Loading
libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageTaskListener.java +2 −2 Original line number Diff line number Diff line Loading @@ -319,9 +319,9 @@ class StageTaskListener implements ShellTaskOrganizer.TaskListener { } } void onResized(Rect newBounds, SurfaceControl.Transaction t) { void onResized(SurfaceControl.Transaction t) { if (mSplitDecorManager != null) { mSplitDecorManager.onResized(newBounds, t); mSplitDecorManager.onResized(t); } } Loading