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

Commit 399c869d authored by Wale Ogunwale's avatar Wale Ogunwale
Browse files

Revert "Only allow AM to update display orientation based on app containers"

This reverts commit 5f1ae6aa.

This caused b/38021942.

Change-Id: Idb23e5ede7aaa4a927e148c0daab3f56ac449d66
Fixes: 38021942
Bug: 37550022
Test: manual
parent 2880a4b4
Loading
Loading
Loading
Loading
+4 −18
Original line number Diff line number Diff line
@@ -1503,16 +1503,8 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo
        return mImeWindowsContainers.forAllWindows(callback, traverseTopToBottom);
    }

    /**
     * Returns the orientation that this display should be in factoring in its children containers.
     *
     * @param includeAppContainers True if then app containers (stacks, tasks, ...) should be
     *                             factored in when determining the orientation. If false only
     *                             non-app/system containers will be used to determine the returned
     *                             orientation.
     * @return The orientation the display should be in.
     */
    int getOrientation(boolean includeAppContainers) {
    @Override
    int getOrientation() {
        final WindowManagerPolicy policy = mService.mPolicy;

        if (mService.mDisplayFrozen) {
@@ -1541,14 +1533,8 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo
            }
        }

        // Top system windows are not requesting an orientation. Get orientation from app containers
        // if allowed. Otherwise, return the last orientation.
        return includeAppContainers ? mTaskStackContainers.getOrientation() : mLastOrientation;
    }

    @Override
    int getOrientation() {
        return getOrientation(true /* includeAppContainers */);
        // Top system windows are not requesting an orientation. Start searching from apps.
        return mTaskStackContainers.getOrientation();
    }

    void updateDisplayInfo() {
+6 −23
Original line number Diff line number Diff line
@@ -2373,7 +2373,7 @@ public class WindowManagerService extends IWindowManager.Stub
        try {
            synchronized(mWindowMap) {
                config = updateOrientationFromAppTokensLocked(currentConfig, freezeThisOneIfNeeded,
                        displayId, true /* includeAppContainers */);
                        displayId);
            }
        } finally {
            Binder.restoreCallingIdentity(ident);
@@ -2383,13 +2383,13 @@ public class WindowManagerService extends IWindowManager.Stub
    }

    private Configuration updateOrientationFromAppTokensLocked(Configuration currentConfig,
            IBinder freezeThisOneIfNeeded, int displayId, boolean includeAppContainers) {
            IBinder freezeThisOneIfNeeded, int displayId) {
        if (!mDisplayReady) {
            return null;
        }
        Configuration config = null;

        if (updateOrientationFromAppTokensLocked(false, displayId, includeAppContainers)) {
        if (updateOrientationFromAppTokensLocked(false, displayId)) {
            // If we changed the orientation but mOrientationChangeComplete is already true,
            // we used seamless rotation, and we don't need to freeze the screen.
            if (freezeThisOneIfNeeded != null && !mRoot.mOrientationChangeComplete) {
@@ -2427,11 +2427,6 @@ public class WindowManagerService extends IWindowManager.Stub
        return config;
    }

    boolean updateOrientationFromAppTokensLocked(boolean inTransaction, int displayId) {
        return updateOrientationFromAppTokensLocked(inTransaction, displayId,
                false /* includeAppContainers */);
    }

    /**
     * Determine the new desired orientation of the display, returning a non-null new Configuration
     * if it has changed from the current orientation.  IF TRUE IS RETURNED SOMEONE MUST CALL
@@ -2442,25 +2437,13 @@ public class WindowManagerService extends IWindowManager.Stub
     * The orientation is computed from non-application windows first. If none of the
     * non-application windows specify orientation, the orientation is computed from application
     * tokens.
     *
     * @param inTransaction True if we are currently in a surface transaction.
     * @param displayId Id of the display to update orientation for.
     * @param includeAppContainers True if then app containers (stacks, tasks, ...) should be
     *                             factored in when determining the orientation. If false only
     *                             non-app/system containers will be used to determine the returned
     *                             orientation.
     *                             NOTE: Only call originating from activity manager are expected to
     *                             set this to true as it needs to synchronize several app states
     *                             like visibility with the update of display orientation.
     * @return True if the display orientation was updated.
     * @see android.view.IWindowManager#updateOrientationFromAppTokens(Configuration, IBinder, int)
     */
    private boolean updateOrientationFromAppTokensLocked(boolean inTransaction, int displayId,
            boolean includeAppContainers) {
        final long ident = Binder.clearCallingIdentity();
    boolean updateOrientationFromAppTokensLocked(boolean inTransaction, int displayId) {
        long ident = Binder.clearCallingIdentity();
        try {
            final DisplayContent dc = mRoot.getDisplayContent(displayId);
            final int req = dc.getOrientation(includeAppContainers);
            final int req = dc.getOrientation();
            if (req != dc.getLastOrientation()) {
                dc.setLastOrientation(req);
                //send a message to Policy indicating orientation change to take