Loading libs/WindowManager/Shell/src/com/android/wm/shell/common/SyncTransactionQueue.java +12 −0 Original line number Diff line number Diff line Loading @@ -68,6 +68,10 @@ public final class SyncTransactionQueue { * Queues a sync transaction to be sent serially to WM. */ public void queue(WindowContainerTransaction wct) { if (wct.isEmpty()) { if (DEBUG) Slog.d(TAG, "Skip queue due to transaction change is empty"); return; } SyncCallback cb = new SyncCallback(wct); synchronized (mQueue) { if (DEBUG) Slog.d(TAG, "Queueing up " + wct); Loading @@ -83,6 +87,10 @@ public final class SyncTransactionQueue { */ public void queue(LegacyTransitions.ILegacyTransition transition, @WindowManager.TransitionType int type, WindowContainerTransaction wct) { if (wct.isEmpty()) { if (DEBUG) Slog.d(TAG, "Skip queue due to transaction change is empty"); return; } SyncCallback cb = new SyncCallback(transition, type, wct); synchronized (mQueue) { if (DEBUG) Slog.d(TAG, "Queueing up legacy transition " + wct); Loading @@ -99,6 +107,10 @@ public final class SyncTransactionQueue { * @return {@code true} if queued, {@code false} if not. */ public boolean queueIfWaiting(WindowContainerTransaction wct) { if (wct.isEmpty()) { if (DEBUG) Slog.d(TAG, "Skip queueIfWaiting due to transaction change is empty"); return false; } synchronized (mQueue) { if (mQueue.isEmpty()) { if (DEBUG) Slog.d(TAG, "Nothing in queue, so skip queueing up " + wct); Loading libs/WindowManager/Shell/src/com/android/wm/shell/common/split/SplitLayout.java +16 −5 Original line number Diff line number Diff line Loading @@ -94,7 +94,8 @@ public final class SplitLayout { private final Rect mDividerBounds = new Rect(); private final Rect mBounds1 = new Rect(); private final Rect mBounds2 = new Rect(); private final Rect mTmpBounds = new Rect(); private final Rect mWinBounds1 = new Rect(); private final Rect mWinBounds2 = new Rect(); private final SplitLayoutHandler mSplitLayoutHandler; private final SplitWindowManager mSplitWindowManager; private final DisplayImeController mDisplayImeController; Loading @@ -104,6 +105,8 @@ public final class SplitLayout { private Context mContext; private DividerSnapAlgorithm mDividerSnapAlgorithm; private WindowContainerToken mWinToken1; private WindowContainerToken mWinToken2; private int mDividePosition; private boolean mInitialized = false; private int mOrientation; Loading Loading @@ -190,10 +193,10 @@ public final class SplitLayout { final int rotation = configuration.windowConfiguration.getRotation(); final Rect rootBounds = configuration.windowConfiguration.getBounds(); if (rotation != mRotation || !mRootBounds.equals(rootBounds)) { mTmpBounds.set(mRootBounds); mTempRect.set(mRootBounds); mRootBounds.set(rootBounds); mDividerSnapAlgorithm = getSnapAlgorithm(mContext, mRootBounds); initDividerPosition(mTmpBounds); initDividerPosition(mTempRect); affectsLayout = true; } Loading Loading @@ -406,8 +409,16 @@ public final class SplitLayout { return; } wct.setBounds(task1.token, mBounds1) .setBounds(task2.token, mBounds2); if (!mBounds1.equals(mWinBounds1) || !task1.token.equals(mWinToken1)) { wct.setBounds(task1.token, mBounds1); mWinBounds1.set(mBounds1); mWinToken1 = task1.token; } if (!mBounds2.equals(mWinBounds2) || !task2.token.equals(mWinToken2)) { wct.setBounds(task2.token, mBounds2); mWinBounds2.set(mBounds2); mWinToken2 = task2.token; } } /** Loading libs/WindowManager/Shell/src/com/android/wm/shell/legacysplitscreen/LegacySplitDisplayLayout.java +29 −18 Original line number Diff line number Diff line Loading @@ -62,6 +62,7 @@ public class LegacySplitDisplayLayout { Rect mSecondary = null; Rect mAdjustedPrimary = null; Rect mAdjustedSecondary = null; final Rect mTmpBounds = new Rect(); public LegacySplitDisplayLayout(Context ctx, DisplayLayout dl, LegacySplitScreenTaskListener taskTiles) { Loading Loading @@ -136,14 +137,33 @@ public class LegacySplitDisplayLayout { return mMinimizedSnapAlgorithm; } void resizeSplits(int position) { /** * Resize primary bounds and secondary bounds by divider position. * * @param position divider position. * @return true if calculated bounds changed. */ boolean resizeSplits(int position) { mPrimary = mPrimary == null ? new Rect() : mPrimary; mSecondary = mSecondary == null ? new Rect() : mSecondary; calcSplitBounds(position, mPrimary, mSecondary); int dockSide = getPrimarySplitSide(); boolean boundsChanged; mTmpBounds.set(mPrimary); DockedDividerUtils.calculateBoundsForPosition(position, dockSide, mPrimary, mDisplayLayout.width(), mDisplayLayout.height(), mDividerSize); boundsChanged = !mPrimary.equals(mTmpBounds); mTmpBounds.set(mSecondary); DockedDividerUtils.calculateBoundsForPosition(position, DockedDividerUtils.invertDockSide(dockSide), mSecondary, mDisplayLayout.width(), mDisplayLayout.height(), mDividerSize); boundsChanged |= !mSecondary.equals(mTmpBounds); return boundsChanged; } void resizeSplits(int position, WindowContainerTransaction t) { resizeSplits(position); if (resizeSplits(position)) { t.setBounds(mTiles.mPrimary.token, mPrimary); t.setBounds(mTiles.mSecondary.token, mSecondary); Loading @@ -152,15 +172,6 @@ public class LegacySplitDisplayLayout { t.setSmallestScreenWidthDp(mTiles.mSecondary.token, getSmallestWidthDpForBounds(mContext, mDisplayLayout, mSecondary)); } void calcSplitBounds(int position, @NonNull Rect outPrimary, @NonNull Rect outSecondary) { int dockSide = getPrimarySplitSide(); DockedDividerUtils.calculateBoundsForPosition(position, dockSide, outPrimary, mDisplayLayout.width(), mDisplayLayout.height(), mDividerSize); DockedDividerUtils.calculateBoundsForPosition(position, DockedDividerUtils.invertDockSide(dockSide), outSecondary, mDisplayLayout.width(), mDisplayLayout.height(), mDividerSize); } Rect calcResizableMinimizedHomeStackBounds() { Loading Loading
libs/WindowManager/Shell/src/com/android/wm/shell/common/SyncTransactionQueue.java +12 −0 Original line number Diff line number Diff line Loading @@ -68,6 +68,10 @@ public final class SyncTransactionQueue { * Queues a sync transaction to be sent serially to WM. */ public void queue(WindowContainerTransaction wct) { if (wct.isEmpty()) { if (DEBUG) Slog.d(TAG, "Skip queue due to transaction change is empty"); return; } SyncCallback cb = new SyncCallback(wct); synchronized (mQueue) { if (DEBUG) Slog.d(TAG, "Queueing up " + wct); Loading @@ -83,6 +87,10 @@ public final class SyncTransactionQueue { */ public void queue(LegacyTransitions.ILegacyTransition transition, @WindowManager.TransitionType int type, WindowContainerTransaction wct) { if (wct.isEmpty()) { if (DEBUG) Slog.d(TAG, "Skip queue due to transaction change is empty"); return; } SyncCallback cb = new SyncCallback(transition, type, wct); synchronized (mQueue) { if (DEBUG) Slog.d(TAG, "Queueing up legacy transition " + wct); Loading @@ -99,6 +107,10 @@ public final class SyncTransactionQueue { * @return {@code true} if queued, {@code false} if not. */ public boolean queueIfWaiting(WindowContainerTransaction wct) { if (wct.isEmpty()) { if (DEBUG) Slog.d(TAG, "Skip queueIfWaiting due to transaction change is empty"); return false; } synchronized (mQueue) { if (mQueue.isEmpty()) { if (DEBUG) Slog.d(TAG, "Nothing in queue, so skip queueing up " + wct); Loading
libs/WindowManager/Shell/src/com/android/wm/shell/common/split/SplitLayout.java +16 −5 Original line number Diff line number Diff line Loading @@ -94,7 +94,8 @@ public final class SplitLayout { private final Rect mDividerBounds = new Rect(); private final Rect mBounds1 = new Rect(); private final Rect mBounds2 = new Rect(); private final Rect mTmpBounds = new Rect(); private final Rect mWinBounds1 = new Rect(); private final Rect mWinBounds2 = new Rect(); private final SplitLayoutHandler mSplitLayoutHandler; private final SplitWindowManager mSplitWindowManager; private final DisplayImeController mDisplayImeController; Loading @@ -104,6 +105,8 @@ public final class SplitLayout { private Context mContext; private DividerSnapAlgorithm mDividerSnapAlgorithm; private WindowContainerToken mWinToken1; private WindowContainerToken mWinToken2; private int mDividePosition; private boolean mInitialized = false; private int mOrientation; Loading Loading @@ -190,10 +193,10 @@ public final class SplitLayout { final int rotation = configuration.windowConfiguration.getRotation(); final Rect rootBounds = configuration.windowConfiguration.getBounds(); if (rotation != mRotation || !mRootBounds.equals(rootBounds)) { mTmpBounds.set(mRootBounds); mTempRect.set(mRootBounds); mRootBounds.set(rootBounds); mDividerSnapAlgorithm = getSnapAlgorithm(mContext, mRootBounds); initDividerPosition(mTmpBounds); initDividerPosition(mTempRect); affectsLayout = true; } Loading Loading @@ -406,8 +409,16 @@ public final class SplitLayout { return; } wct.setBounds(task1.token, mBounds1) .setBounds(task2.token, mBounds2); if (!mBounds1.equals(mWinBounds1) || !task1.token.equals(mWinToken1)) { wct.setBounds(task1.token, mBounds1); mWinBounds1.set(mBounds1); mWinToken1 = task1.token; } if (!mBounds2.equals(mWinBounds2) || !task2.token.equals(mWinToken2)) { wct.setBounds(task2.token, mBounds2); mWinBounds2.set(mBounds2); mWinToken2 = task2.token; } } /** Loading
libs/WindowManager/Shell/src/com/android/wm/shell/legacysplitscreen/LegacySplitDisplayLayout.java +29 −18 Original line number Diff line number Diff line Loading @@ -62,6 +62,7 @@ public class LegacySplitDisplayLayout { Rect mSecondary = null; Rect mAdjustedPrimary = null; Rect mAdjustedSecondary = null; final Rect mTmpBounds = new Rect(); public LegacySplitDisplayLayout(Context ctx, DisplayLayout dl, LegacySplitScreenTaskListener taskTiles) { Loading Loading @@ -136,14 +137,33 @@ public class LegacySplitDisplayLayout { return mMinimizedSnapAlgorithm; } void resizeSplits(int position) { /** * Resize primary bounds and secondary bounds by divider position. * * @param position divider position. * @return true if calculated bounds changed. */ boolean resizeSplits(int position) { mPrimary = mPrimary == null ? new Rect() : mPrimary; mSecondary = mSecondary == null ? new Rect() : mSecondary; calcSplitBounds(position, mPrimary, mSecondary); int dockSide = getPrimarySplitSide(); boolean boundsChanged; mTmpBounds.set(mPrimary); DockedDividerUtils.calculateBoundsForPosition(position, dockSide, mPrimary, mDisplayLayout.width(), mDisplayLayout.height(), mDividerSize); boundsChanged = !mPrimary.equals(mTmpBounds); mTmpBounds.set(mSecondary); DockedDividerUtils.calculateBoundsForPosition(position, DockedDividerUtils.invertDockSide(dockSide), mSecondary, mDisplayLayout.width(), mDisplayLayout.height(), mDividerSize); boundsChanged |= !mSecondary.equals(mTmpBounds); return boundsChanged; } void resizeSplits(int position, WindowContainerTransaction t) { resizeSplits(position); if (resizeSplits(position)) { t.setBounds(mTiles.mPrimary.token, mPrimary); t.setBounds(mTiles.mSecondary.token, mSecondary); Loading @@ -152,15 +172,6 @@ public class LegacySplitDisplayLayout { t.setSmallestScreenWidthDp(mTiles.mSecondary.token, getSmallestWidthDpForBounds(mContext, mDisplayLayout, mSecondary)); } void calcSplitBounds(int position, @NonNull Rect outPrimary, @NonNull Rect outSecondary) { int dockSide = getPrimarySplitSide(); DockedDividerUtils.calculateBoundsForPosition(position, dockSide, outPrimary, mDisplayLayout.width(), mDisplayLayout.height(), mDividerSize); DockedDividerUtils.calculateBoundsForPosition(position, DockedDividerUtils.invertDockSide(dockSide), outSecondary, mDisplayLayout.width(), mDisplayLayout.height(), mDividerSize); } Rect calcResizableMinimizedHomeStackBounds() { Loading