Loading packages/SystemUI/src/com/android/systemui/recents/OverviewProxyService.java +6 −0 Original line number Original line Diff line number Diff line Loading @@ -670,6 +670,12 @@ public class OverviewProxyService implements CallbackController<OverviewProxyLis }); }); } } startConnectionToCurrentUser(); startConnectionToCurrentUser(); // Clean up the minimized state if launcher dies Divider divider = mDividerOptional.get(); if (divider != null) { divider.setMinimized(false); } } } public void startConnectionToCurrentUser() { public void startConnectionToCurrentUser() { Loading packages/SystemUI/src/com/android/systemui/stackdivider/Divider.java +17 −7 Original line number Original line Diff line number Diff line Loading @@ -273,10 +273,12 @@ public class Divider extends SystemUI implements DividerView.DividerCallbacks, } } // Update all the adjusted-for-ime states // Update all the adjusted-for-ime states if (!mPaused) { mView.setAdjustedForIme(mTargetShown, mTargetShown mView.setAdjustedForIme(mTargetShown, mTargetShown ? DisplayImeController.ANIMATION_DURATION_SHOW_MS ? DisplayImeController.ANIMATION_DURATION_SHOW_MS : DisplayImeController.ANIMATION_DURATION_HIDE_MS); : DisplayImeController.ANIMATION_DURATION_HIDE_MS); setAdjustedForIme(mTargetShown); } setAdjustedForIme(mTargetShown && !mPaused); } } @Override @Override Loading Loading @@ -390,6 +392,9 @@ public class Divider extends SystemUI implements DividerView.DividerCallbacks, mTargetPrimaryDim = mTargetSecondaryDim = 0.f; mTargetPrimaryDim = mTargetSecondaryDim = 0.f; updateImeAdjustState(); updateImeAdjustState(); startAsyncAnimation(); startAsyncAnimation(); if (mAnimation != null) { mAnimation.end(); } }); }); } } Loading Loading @@ -605,15 +610,17 @@ public class Divider extends SystemUI implements DividerView.DividerCallbacks, + mHomeStackResizable + "->" + homeStackResizable + " split:" + inSplitMode()); + mHomeStackResizable + "->" + homeStackResizable + " split:" + inSplitMode()); } } WindowContainerTransaction wct = new WindowContainerTransaction(); WindowContainerTransaction wct = new WindowContainerTransaction(); final boolean minimizedChanged = mMinimized != minimized; // Update minimized state // Update minimized state if (mMinimized != minimized) { if (minimizedChanged) { mMinimized = minimized; mMinimized = minimized; } } // Always set this because we could be entering split when mMinimized is already true // Always set this because we could be entering split when mMinimized is already true wct.setFocusable(mSplits.mPrimary.token, !mMinimized); wct.setFocusable(mSplits.mPrimary.token, !mMinimized); // Update home-stack resizability // Update home-stack resizability if (mHomeStackResizable != homeStackResizable) { final boolean homeResizableChanged = mHomeStackResizable != homeStackResizable; if (homeResizableChanged) { mHomeStackResizable = homeStackResizable; mHomeStackResizable = homeStackResizable; if (inSplitMode()) { if (inSplitMode()) { WindowManagerProxy.applyHomeTasksMinimized( WindowManagerProxy.applyHomeTasksMinimized( Loading @@ -629,7 +636,10 @@ public class Divider extends SystemUI implements DividerView.DividerCallbacks, if (mMinimized) { if (mMinimized) { mImePositionProcessor.pause(displayId); mImePositionProcessor.pause(displayId); } } if (minimizedChanged || homeResizableChanged) { // This conflicts with IME adjustment, so only call it when things change. mView.setMinimizedDockStack(minimized, getAnimDuration(), homeStackResizable); mView.setMinimizedDockStack(minimized, getAnimDuration(), homeStackResizable); } if (!mMinimized) { if (!mMinimized) { // afterwards so it can end any animations started in view // afterwards so it can end any animations started in view mImePositionProcessor.resume(displayId); mImePositionProcessor.resume(displayId); Loading packages/SystemUI/src/com/android/systemui/stackdivider/SplitDisplayLayout.java +16 −5 Original line number Original line Diff line number Diff line Loading @@ -191,13 +191,24 @@ public class SplitDisplayLayout { final int currDividerWidth = final int currDividerWidth = (int) (dividerWidthInactive * shownFraction + dividerWidth * (1.f - shownFraction)); (int) (dividerWidthInactive * shownFraction + dividerWidth * (1.f - shownFraction)); // Calculate the highest we can move the bottom of the top stack to keep 30% visible. final int minTopStackBottom = displayStableRect.top final int minTopStackBottom = displayStableRect.top + (int) ((mPrimary.bottom - displayStableRect.top) * ADJUSTED_STACK_FRACTION_MIN); + (int) ((mPrimary.bottom - displayStableRect.top) * ADJUSTED_STACK_FRACTION_MIN); final int minImeTop = minTopStackBottom + currDividerWidth; // Based on that, calculate the maximum amount we'll allow the ime to shift things. final int maxOffset = mPrimary.bottom - minTopStackBottom; // Calculate an offset which shifts the stacks up by the height of the IME, but still // Calculate how much we would shift things without limits (basically the height of ime). // leaves at least 30% of the top stack visible. final int desiredOffset = hiddenTop - shownTop; final int yOffset = Math.max(0, dl.height() - Math.max(currImeTop, minImeTop)); // Calculate an "adjustedTop" which is the currImeTop but restricted by our constraints. // We want an effect where the adjustment only occurs during the "highest" portion of the // ime animation. This is done by shifting the adjustment values by the difference in // offsets (effectively playing the whole adjustment animation some fixed amount of pixels // below the ime top). final int topCorrection = Math.max(0, desiredOffset - maxOffset); final int adjustedTop = currImeTop + topCorrection; // The actual yOffset is the distance between adjustedTop and the bottom of the display. // Since our adjustedTop values are playing "below" the ime, we clamp at 0 so we only // see adjustment upward. final int yOffset = Math.max(0, dl.height() - adjustedTop); // TOP // TOP // Reduce the offset by an additional small amount to squish the divider bar. // Reduce the offset by an additional small amount to squish the divider bar. Loading packages/SystemUI/src/com/android/systemui/stackdivider/SplitScreenTaskOrganizer.java +10 −3 Original line number Original line Diff line number Diff line Loading @@ -30,7 +30,6 @@ import android.os.RemoteException; import android.util.Log; import android.util.Log; import android.view.Display; import android.view.Display; import android.view.ITaskOrganizer; import android.view.ITaskOrganizer; import android.view.IWindowContainer; import android.view.SurfaceControl; import android.view.SurfaceControl; import android.view.SurfaceSession; import android.view.SurfaceSession; Loading Loading @@ -108,6 +107,8 @@ class SplitScreenTaskOrganizer extends ITaskOrganizer.Stub { * presentations based on the contents of the split regions. * presentations based on the contents of the split regions. */ */ private void handleTaskInfoChanged(RunningTaskInfo info) { private void handleTaskInfoChanged(RunningTaskInfo info) { final boolean secondaryWasHomeOrRecents = mSecondary.topActivityType == ACTIVITY_TYPE_HOME || mSecondary.topActivityType == ACTIVITY_TYPE_RECENTS; final boolean primaryWasEmpty = mPrimary.topActivityType == ACTIVITY_TYPE_UNDEFINED; final boolean primaryWasEmpty = mPrimary.topActivityType == ACTIVITY_TYPE_UNDEFINED; final boolean secondaryWasEmpty = mSecondary.topActivityType == ACTIVITY_TYPE_UNDEFINED; final boolean secondaryWasEmpty = mSecondary.topActivityType == ACTIVITY_TYPE_UNDEFINED; if (info.token.asBinder() == mPrimary.token.asBinder()) { if (info.token.asBinder() == mPrimary.token.asBinder()) { Loading @@ -117,9 +118,16 @@ class SplitScreenTaskOrganizer extends ITaskOrganizer.Stub { } } final boolean primaryIsEmpty = mPrimary.topActivityType == ACTIVITY_TYPE_UNDEFINED; final boolean primaryIsEmpty = mPrimary.topActivityType == ACTIVITY_TYPE_UNDEFINED; final boolean secondaryIsEmpty = mSecondary.topActivityType == ACTIVITY_TYPE_UNDEFINED; final boolean secondaryIsEmpty = mSecondary.topActivityType == ACTIVITY_TYPE_UNDEFINED; final boolean secondaryIsHomeOrRecents = mSecondary.topActivityType == ACTIVITY_TYPE_HOME || mSecondary.topActivityType == ACTIVITY_TYPE_RECENTS; if (DEBUG) { if (DEBUG) { Log.d(TAG, "onTaskInfoChanged " + mPrimary + " " + mSecondary); Log.d(TAG, "onTaskInfoChanged " + mPrimary + " " + mSecondary); } } if (primaryIsEmpty == primaryWasEmpty && secondaryWasEmpty == secondaryIsEmpty && secondaryWasHomeOrRecents == secondaryIsHomeOrRecents) { // No relevant changes return; } if (primaryIsEmpty || secondaryIsEmpty) { if (primaryIsEmpty || secondaryIsEmpty) { // At-least one of the splits is empty which means we are currently transitioning // At-least one of the splits is empty which means we are currently transitioning // into or out-of split-screen mode. // into or out-of split-screen mode. Loading @@ -146,8 +154,7 @@ class SplitScreenTaskOrganizer extends ITaskOrganizer.Stub { } } mDivider.startEnterSplit(); mDivider.startEnterSplit(); } } } else if (mSecondary.topActivityType == ACTIVITY_TYPE_HOME } else if (secondaryIsHomeOrRecents) { || mSecondary.topActivityType == ACTIVITY_TYPE_RECENTS) { // Both splits are populated but the secondary split has a home/recents stack on top, // Both splits are populated but the secondary split has a home/recents stack on top, // so enter minimized mode. // so enter minimized mode. mDivider.ensureMinimizedSplit(); mDivider.ensureMinimizedSplit(); Loading services/core/java/com/android/server/wm/Task.java +15 −7 Original line number Original line Diff line number Diff line Loading @@ -1938,7 +1938,12 @@ class Task extends WindowContainer<WindowContainer> { // TODO: Should also take care of Pip mode changes here. // TODO: Should also take care of Pip mode changes here. saveLaunchingStateIfNeeded(); saveLaunchingStateIfNeeded(); updateTaskOrganizerState(false /* forceUpdate */); final boolean taskOrgChanged = updateTaskOrganizerState(false /* forceUpdate */); // If the task organizer has changed, then it will already be receiving taskAppeared with // the latest task-info thus the task-info won't have changed. if (!taskOrgChanged && mTaskOrganizer != null) { mAtmService.mTaskOrganizerController.dispatchTaskInfoChanged(this, false /* force */); } } } /** /** Loading Loading @@ -4043,15 +4048,16 @@ class Task extends WindowContainer<WindowContainer> { } } } } void setTaskOrganizer(ITaskOrganizer organizer) { boolean setTaskOrganizer(ITaskOrganizer organizer) { if (mTaskOrganizer == organizer) { if (mTaskOrganizer == organizer) { return; return false; } } // Let the old organizer know it has lost control. // Let the old organizer know it has lost control. sendTaskVanished(); sendTaskVanished(); mTaskOrganizer = organizer; mTaskOrganizer = organizer; sendTaskAppeared(); sendTaskAppeared(); onTaskOrganizerChanged(); onTaskOrganizerChanged(); return true; } } // Called on Binder death. // Called on Binder death. Loading @@ -4068,10 +4074,11 @@ class Task extends WindowContainer<WindowContainer> { * @param forceUpdate Updates the task organizer to the one currently specified in the task * @param forceUpdate Updates the task organizer to the one currently specified in the task * org controller for the task's windowing mode, ignoring the cached * org controller for the task's windowing mode, ignoring the cached * windowing mode checks. * windowing mode checks. * @return {@code true} if task organizer changed. */ */ void updateTaskOrganizerState(boolean forceUpdate) { boolean updateTaskOrganizerState(boolean forceUpdate) { if (!isRootTask()) { if (!isRootTask()) { return; return false; } } final int windowingMode = getWindowingMode(); final int windowingMode = getWindowingMode(); Loading @@ -4080,7 +4087,7 @@ class Task extends WindowContainer<WindowContainer> { // with our old organizer. This lets us implement the semantic // with our old organizer. This lets us implement the semantic // where SysUI can continue to manage it's old tasks // where SysUI can continue to manage it's old tasks // while CTS temporarily takes over the registration. // while CTS temporarily takes over the registration. return; return false; } } /* /* * Different windowing modes may be managed by different task organizers. If * Different windowing modes may be managed by different task organizers. If Loading @@ -4089,8 +4096,9 @@ class Task extends WindowContainer<WindowContainer> { */ */ final ITaskOrganizer org = final ITaskOrganizer org = mWmService.mAtmService.mTaskOrganizerController.getTaskOrganizer(windowingMode); mWmService.mAtmService.mTaskOrganizerController.getTaskOrganizer(windowingMode); setTaskOrganizer(org); final boolean result = setTaskOrganizer(org); mLastTaskOrganizerWindowingMode = windowingMode; mLastTaskOrganizerWindowingMode = windowingMode; return result; } } private void onTaskOrganizerChanged() { private void onTaskOrganizerChanged() { Loading Loading
packages/SystemUI/src/com/android/systemui/recents/OverviewProxyService.java +6 −0 Original line number Original line Diff line number Diff line Loading @@ -670,6 +670,12 @@ public class OverviewProxyService implements CallbackController<OverviewProxyLis }); }); } } startConnectionToCurrentUser(); startConnectionToCurrentUser(); // Clean up the minimized state if launcher dies Divider divider = mDividerOptional.get(); if (divider != null) { divider.setMinimized(false); } } } public void startConnectionToCurrentUser() { public void startConnectionToCurrentUser() { Loading
packages/SystemUI/src/com/android/systemui/stackdivider/Divider.java +17 −7 Original line number Original line Diff line number Diff line Loading @@ -273,10 +273,12 @@ public class Divider extends SystemUI implements DividerView.DividerCallbacks, } } // Update all the adjusted-for-ime states // Update all the adjusted-for-ime states if (!mPaused) { mView.setAdjustedForIme(mTargetShown, mTargetShown mView.setAdjustedForIme(mTargetShown, mTargetShown ? DisplayImeController.ANIMATION_DURATION_SHOW_MS ? DisplayImeController.ANIMATION_DURATION_SHOW_MS : DisplayImeController.ANIMATION_DURATION_HIDE_MS); : DisplayImeController.ANIMATION_DURATION_HIDE_MS); setAdjustedForIme(mTargetShown); } setAdjustedForIme(mTargetShown && !mPaused); } } @Override @Override Loading Loading @@ -390,6 +392,9 @@ public class Divider extends SystemUI implements DividerView.DividerCallbacks, mTargetPrimaryDim = mTargetSecondaryDim = 0.f; mTargetPrimaryDim = mTargetSecondaryDim = 0.f; updateImeAdjustState(); updateImeAdjustState(); startAsyncAnimation(); startAsyncAnimation(); if (mAnimation != null) { mAnimation.end(); } }); }); } } Loading Loading @@ -605,15 +610,17 @@ public class Divider extends SystemUI implements DividerView.DividerCallbacks, + mHomeStackResizable + "->" + homeStackResizable + " split:" + inSplitMode()); + mHomeStackResizable + "->" + homeStackResizable + " split:" + inSplitMode()); } } WindowContainerTransaction wct = new WindowContainerTransaction(); WindowContainerTransaction wct = new WindowContainerTransaction(); final boolean minimizedChanged = mMinimized != minimized; // Update minimized state // Update minimized state if (mMinimized != minimized) { if (minimizedChanged) { mMinimized = minimized; mMinimized = minimized; } } // Always set this because we could be entering split when mMinimized is already true // Always set this because we could be entering split when mMinimized is already true wct.setFocusable(mSplits.mPrimary.token, !mMinimized); wct.setFocusable(mSplits.mPrimary.token, !mMinimized); // Update home-stack resizability // Update home-stack resizability if (mHomeStackResizable != homeStackResizable) { final boolean homeResizableChanged = mHomeStackResizable != homeStackResizable; if (homeResizableChanged) { mHomeStackResizable = homeStackResizable; mHomeStackResizable = homeStackResizable; if (inSplitMode()) { if (inSplitMode()) { WindowManagerProxy.applyHomeTasksMinimized( WindowManagerProxy.applyHomeTasksMinimized( Loading @@ -629,7 +636,10 @@ public class Divider extends SystemUI implements DividerView.DividerCallbacks, if (mMinimized) { if (mMinimized) { mImePositionProcessor.pause(displayId); mImePositionProcessor.pause(displayId); } } if (minimizedChanged || homeResizableChanged) { // This conflicts with IME adjustment, so only call it when things change. mView.setMinimizedDockStack(minimized, getAnimDuration(), homeStackResizable); mView.setMinimizedDockStack(minimized, getAnimDuration(), homeStackResizable); } if (!mMinimized) { if (!mMinimized) { // afterwards so it can end any animations started in view // afterwards so it can end any animations started in view mImePositionProcessor.resume(displayId); mImePositionProcessor.resume(displayId); Loading
packages/SystemUI/src/com/android/systemui/stackdivider/SplitDisplayLayout.java +16 −5 Original line number Original line Diff line number Diff line Loading @@ -191,13 +191,24 @@ public class SplitDisplayLayout { final int currDividerWidth = final int currDividerWidth = (int) (dividerWidthInactive * shownFraction + dividerWidth * (1.f - shownFraction)); (int) (dividerWidthInactive * shownFraction + dividerWidth * (1.f - shownFraction)); // Calculate the highest we can move the bottom of the top stack to keep 30% visible. final int minTopStackBottom = displayStableRect.top final int minTopStackBottom = displayStableRect.top + (int) ((mPrimary.bottom - displayStableRect.top) * ADJUSTED_STACK_FRACTION_MIN); + (int) ((mPrimary.bottom - displayStableRect.top) * ADJUSTED_STACK_FRACTION_MIN); final int minImeTop = minTopStackBottom + currDividerWidth; // Based on that, calculate the maximum amount we'll allow the ime to shift things. final int maxOffset = mPrimary.bottom - minTopStackBottom; // Calculate an offset which shifts the stacks up by the height of the IME, but still // Calculate how much we would shift things without limits (basically the height of ime). // leaves at least 30% of the top stack visible. final int desiredOffset = hiddenTop - shownTop; final int yOffset = Math.max(0, dl.height() - Math.max(currImeTop, minImeTop)); // Calculate an "adjustedTop" which is the currImeTop but restricted by our constraints. // We want an effect where the adjustment only occurs during the "highest" portion of the // ime animation. This is done by shifting the adjustment values by the difference in // offsets (effectively playing the whole adjustment animation some fixed amount of pixels // below the ime top). final int topCorrection = Math.max(0, desiredOffset - maxOffset); final int adjustedTop = currImeTop + topCorrection; // The actual yOffset is the distance between adjustedTop and the bottom of the display. // Since our adjustedTop values are playing "below" the ime, we clamp at 0 so we only // see adjustment upward. final int yOffset = Math.max(0, dl.height() - adjustedTop); // TOP // TOP // Reduce the offset by an additional small amount to squish the divider bar. // Reduce the offset by an additional small amount to squish the divider bar. Loading
packages/SystemUI/src/com/android/systemui/stackdivider/SplitScreenTaskOrganizer.java +10 −3 Original line number Original line Diff line number Diff line Loading @@ -30,7 +30,6 @@ import android.os.RemoteException; import android.util.Log; import android.util.Log; import android.view.Display; import android.view.Display; import android.view.ITaskOrganizer; import android.view.ITaskOrganizer; import android.view.IWindowContainer; import android.view.SurfaceControl; import android.view.SurfaceControl; import android.view.SurfaceSession; import android.view.SurfaceSession; Loading Loading @@ -108,6 +107,8 @@ class SplitScreenTaskOrganizer extends ITaskOrganizer.Stub { * presentations based on the contents of the split regions. * presentations based on the contents of the split regions. */ */ private void handleTaskInfoChanged(RunningTaskInfo info) { private void handleTaskInfoChanged(RunningTaskInfo info) { final boolean secondaryWasHomeOrRecents = mSecondary.topActivityType == ACTIVITY_TYPE_HOME || mSecondary.topActivityType == ACTIVITY_TYPE_RECENTS; final boolean primaryWasEmpty = mPrimary.topActivityType == ACTIVITY_TYPE_UNDEFINED; final boolean primaryWasEmpty = mPrimary.topActivityType == ACTIVITY_TYPE_UNDEFINED; final boolean secondaryWasEmpty = mSecondary.topActivityType == ACTIVITY_TYPE_UNDEFINED; final boolean secondaryWasEmpty = mSecondary.topActivityType == ACTIVITY_TYPE_UNDEFINED; if (info.token.asBinder() == mPrimary.token.asBinder()) { if (info.token.asBinder() == mPrimary.token.asBinder()) { Loading @@ -117,9 +118,16 @@ class SplitScreenTaskOrganizer extends ITaskOrganizer.Stub { } } final boolean primaryIsEmpty = mPrimary.topActivityType == ACTIVITY_TYPE_UNDEFINED; final boolean primaryIsEmpty = mPrimary.topActivityType == ACTIVITY_TYPE_UNDEFINED; final boolean secondaryIsEmpty = mSecondary.topActivityType == ACTIVITY_TYPE_UNDEFINED; final boolean secondaryIsEmpty = mSecondary.topActivityType == ACTIVITY_TYPE_UNDEFINED; final boolean secondaryIsHomeOrRecents = mSecondary.topActivityType == ACTIVITY_TYPE_HOME || mSecondary.topActivityType == ACTIVITY_TYPE_RECENTS; if (DEBUG) { if (DEBUG) { Log.d(TAG, "onTaskInfoChanged " + mPrimary + " " + mSecondary); Log.d(TAG, "onTaskInfoChanged " + mPrimary + " " + mSecondary); } } if (primaryIsEmpty == primaryWasEmpty && secondaryWasEmpty == secondaryIsEmpty && secondaryWasHomeOrRecents == secondaryIsHomeOrRecents) { // No relevant changes return; } if (primaryIsEmpty || secondaryIsEmpty) { if (primaryIsEmpty || secondaryIsEmpty) { // At-least one of the splits is empty which means we are currently transitioning // At-least one of the splits is empty which means we are currently transitioning // into or out-of split-screen mode. // into or out-of split-screen mode. Loading @@ -146,8 +154,7 @@ class SplitScreenTaskOrganizer extends ITaskOrganizer.Stub { } } mDivider.startEnterSplit(); mDivider.startEnterSplit(); } } } else if (mSecondary.topActivityType == ACTIVITY_TYPE_HOME } else if (secondaryIsHomeOrRecents) { || mSecondary.topActivityType == ACTIVITY_TYPE_RECENTS) { // Both splits are populated but the secondary split has a home/recents stack on top, // Both splits are populated but the secondary split has a home/recents stack on top, // so enter minimized mode. // so enter minimized mode. mDivider.ensureMinimizedSplit(); mDivider.ensureMinimizedSplit(); Loading
services/core/java/com/android/server/wm/Task.java +15 −7 Original line number Original line Diff line number Diff line Loading @@ -1938,7 +1938,12 @@ class Task extends WindowContainer<WindowContainer> { // TODO: Should also take care of Pip mode changes here. // TODO: Should also take care of Pip mode changes here. saveLaunchingStateIfNeeded(); saveLaunchingStateIfNeeded(); updateTaskOrganizerState(false /* forceUpdate */); final boolean taskOrgChanged = updateTaskOrganizerState(false /* forceUpdate */); // If the task organizer has changed, then it will already be receiving taskAppeared with // the latest task-info thus the task-info won't have changed. if (!taskOrgChanged && mTaskOrganizer != null) { mAtmService.mTaskOrganizerController.dispatchTaskInfoChanged(this, false /* force */); } } } /** /** Loading Loading @@ -4043,15 +4048,16 @@ class Task extends WindowContainer<WindowContainer> { } } } } void setTaskOrganizer(ITaskOrganizer organizer) { boolean setTaskOrganizer(ITaskOrganizer organizer) { if (mTaskOrganizer == organizer) { if (mTaskOrganizer == organizer) { return; return false; } } // Let the old organizer know it has lost control. // Let the old organizer know it has lost control. sendTaskVanished(); sendTaskVanished(); mTaskOrganizer = organizer; mTaskOrganizer = organizer; sendTaskAppeared(); sendTaskAppeared(); onTaskOrganizerChanged(); onTaskOrganizerChanged(); return true; } } // Called on Binder death. // Called on Binder death. Loading @@ -4068,10 +4074,11 @@ class Task extends WindowContainer<WindowContainer> { * @param forceUpdate Updates the task organizer to the one currently specified in the task * @param forceUpdate Updates the task organizer to the one currently specified in the task * org controller for the task's windowing mode, ignoring the cached * org controller for the task's windowing mode, ignoring the cached * windowing mode checks. * windowing mode checks. * @return {@code true} if task organizer changed. */ */ void updateTaskOrganizerState(boolean forceUpdate) { boolean updateTaskOrganizerState(boolean forceUpdate) { if (!isRootTask()) { if (!isRootTask()) { return; return false; } } final int windowingMode = getWindowingMode(); final int windowingMode = getWindowingMode(); Loading @@ -4080,7 +4087,7 @@ class Task extends WindowContainer<WindowContainer> { // with our old organizer. This lets us implement the semantic // with our old organizer. This lets us implement the semantic // where SysUI can continue to manage it's old tasks // where SysUI can continue to manage it's old tasks // while CTS temporarily takes over the registration. // while CTS temporarily takes over the registration. return; return false; } } /* /* * Different windowing modes may be managed by different task organizers. If * Different windowing modes may be managed by different task organizers. If Loading @@ -4089,8 +4096,9 @@ class Task extends WindowContainer<WindowContainer> { */ */ final ITaskOrganizer org = final ITaskOrganizer org = mWmService.mAtmService.mTaskOrganizerController.getTaskOrganizer(windowingMode); mWmService.mAtmService.mTaskOrganizerController.getTaskOrganizer(windowingMode); setTaskOrganizer(org); final boolean result = setTaskOrganizer(org); mLastTaskOrganizerWindowingMode = windowingMode; mLastTaskOrganizerWindowingMode = windowingMode; return result; } } private void onTaskOrganizerChanged() { private void onTaskOrganizerChanged() { Loading