Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 28fb865b authored by Tony Huang's avatar Tony Huang
Browse files

Use queue to defer all task events

It has two layer defer currently, it should only remain queue
events method. Remove using of mDeferTaskOrgCallbacksConsumer
and extand using of queue method to onTaskAppeared,
onTaskVanished and onBackPressedOnTaskRoot.

Bug: 171749427
Bug: 177551997
Test: check split screen, PiP and bubbles work normally
Test: atest WmTests:WindowOrganizerTests
Test: atest CtsHarmfulAppWarningHostTestCases
Change-Id: Ic8fea93117f45b60f15b06773eefbbde11e48fd5
parent 7d6b3cc8
Loading
Loading
Loading
Loading
+0 −6
Original line number Original line Diff line number Diff line
@@ -262,12 +262,6 @@ public class ShellTaskOrganizer extends TaskOrganizer {
        synchronized (mLock) {
        synchronized (mLock) {
            ProtoLog.v(WM_SHELL_TASK_ORG, "Task info changed taskId=%d", taskInfo.taskId);
            ProtoLog.v(WM_SHELL_TASK_ORG, "Task info changed taskId=%d", taskInfo.taskId);
            final TaskAppearedInfo data = mTasks.get(taskInfo.taskId);
            final TaskAppearedInfo data = mTasks.get(taskInfo.taskId);
            if (data == null) {
                // TODO(b/171749427): It means onTaskInfoChanged send before onTaskAppeared or
                //  after onTaskVanished, it should be fixed in controller side.
                return;
            }

            final TaskListener oldListener = getTaskListener(data.getTaskInfo());
            final TaskListener oldListener = getTaskListener(data.getTaskInfo());
            final TaskListener newListener = getTaskListener(taskInfo);
            final TaskListener newListener = getTaskListener(taskInfo);
            mTasks.put(taskInfo.taskId, new TaskAppearedInfo(taskInfo, data.getLeash()));
            mTasks.put(taskInfo.taskId, new TaskAppearedInfo(taskInfo, data.getLeash()));
+4 −4
Original line number Original line Diff line number Diff line
@@ -41,12 +41,12 @@ public class PipUiEventLogger {
    }
    }


    public void setTaskInfo(TaskInfo taskInfo) {
    public void setTaskInfo(TaskInfo taskInfo) {
        if (taskInfo == null) {
        if (taskInfo != null && taskInfo.topActivity != null) {
            mPackageName = null;
            mPackageUid = INVALID_PACKAGE_UID;
        } else {
            mPackageName = taskInfo.topActivity.getPackageName();
            mPackageName = taskInfo.topActivity.getPackageName();
            mPackageUid = getUid(mPackageName, taskInfo.userId);
            mPackageUid = getUid(mPackageName, taskInfo.userId);
        } else {
            mPackageName = null;
            mPackageUid = INVALID_PACKAGE_UID;
        }
        }
    }
    }


+1 −0
Original line number Original line Diff line number Diff line
@@ -1005,6 +1005,7 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, Dump
    }
    }


    private void updateThemeColors() {
    private void updateThemeColors() {
        if (mScrimBehind == null) return;
        int background = Utils.getColorAttr(mScrimBehind.getContext(),
        int background = Utils.getColorAttr(mScrimBehind.getContext(),
                android.R.attr.colorBackgroundFloating).getDefaultColor();
                android.R.attr.colorBackgroundFloating).getDefaultColor();
        int accent = Utils.getColorAccent(mScrimBehind.getContext()).getDefaultColor();
        int accent = Utils.getColorAccent(mScrimBehind.getContext()).getDefaultColor();
+3 −3
Original line number Original line Diff line number Diff line
@@ -862,6 +862,9 @@ class RootWindowContainer extends WindowContainer<DisplayContent>
                        "<<< CLOSE TRANSACTION performLayoutAndPlaceSurfaces");
                        "<<< CLOSE TRANSACTION performLayoutAndPlaceSurfaces");
            }
            }
        }
        }

        // Send any pending task-info changes that were queued-up during a layout deferment
        mWmService.mAtmService.mTaskOrganizerController.dispatchPendingEvents();
        mWmService.mAnimator.executeAfterPrepareSurfacesRunnables();
        mWmService.mAnimator.executeAfterPrepareSurfacesRunnables();


        checkAppTransitionReady(surfacePlacer);
        checkAppTransitionReady(surfacePlacer);
@@ -1014,9 +1017,6 @@ class RootWindowContainer extends WindowContainer<DisplayContent>


        mWmService.scheduleAnimationLocked();
        mWmService.scheduleAnimationLocked();


        // Send any pending task-info changes that were queued-up during a layout deferment
        mWmService.mAtmService.mTaskOrganizerController.dispatchPendingTaskInfoChanges();

        if (DEBUG_WINDOW_TRACE) Slog.e(TAG, "performSurfacePlacementInner exit");
        if (DEBUG_WINDOW_TRACE) Slog.e(TAG, "performSurfacePlacementInner exit");
    }
    }


+2 −3
Original line number Original line Diff line number Diff line
@@ -4993,7 +4993,6 @@ class Task extends WindowContainer<WindowContainer> {
            }
            }
        } else {
        } else {
            // No longer managed by any organizer.
            // No longer managed by any organizer.
            mTaskAppearedSent = false;
            setForceHidden(FLAG_FORCE_HIDDEN_FOR_TASK_ORG, false /* set */);
            setForceHidden(FLAG_FORCE_HIDDEN_FOR_TASK_ORG, false /* set */);
            if (mCreatedByOrganizer) {
            if (mCreatedByOrganizer) {
                removeImmediately("setTaskOrganizer");
                removeImmediately("setTaskOrganizer");
@@ -5019,7 +5018,7 @@ class Task extends WindowContainer<WindowContainer> {
     */
     */
    boolean updateTaskOrganizerState(boolean forceUpdate, boolean skipTaskAppeared) {
    boolean updateTaskOrganizerState(boolean forceUpdate, boolean skipTaskAppeared) {
        if (getSurfaceControl() == null) {
        if (getSurfaceControl() == null) {
            // Can't call onTaskAppeared without a surfacecontrol, so defer this until after one
            // Can't call onTaskAppeared without a surfacecontrol, so defer this until next one
            // is created.
            // is created.
            return false;
            return false;
        }
        }
@@ -7672,7 +7671,7 @@ class Task extends WindowContainer<WindowContainer> {


    void dispatchTaskInfoChangedIfNeeded(boolean force) {
    void dispatchTaskInfoChangedIfNeeded(boolean force) {
        if (isOrganized()) {
        if (isOrganized()) {
            mAtmService.mTaskOrganizerController.dispatchTaskInfoChanged(this, force);
            mAtmService.mTaskOrganizerController.onTaskInfoChanged(this, force);
        }
        }
    }
    }


Loading