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

Commit cb60b65b authored by Ming-Shin Lu's avatar Ming-Shin Lu
Browse files

[ShellTransition]: invoke WMS#setRecentsAppBehindSystemBars to WM

With enabling shell-transition, in case of seeing status bar icon
blinking when hammer tapping on the navigation bar to trigger recents
animation quickly as CL[1] mentioned,

As the result, Launcher side still need to callback recents app
behind system bar status to signal WM if launcher should affect
system bar appearance with [1] introduced method
setRecentsAppBehindSystemBars.

Bug: 215504556
Test: manual as below steps
  1) Launching a app
  2) Hammer tapping on the navigation bar
  3) Expect the staus bar icon won't blinking

Change-Id: I4b41e06e559168a61a29fa6ea9f58b834a7f1a1c
parent e424f57d
Loading
Loading
Loading
Loading
+15 −1
Original line number Diff line number Diff line
@@ -17,9 +17,13 @@ package com.android.quickstep;

import static com.android.launcher3.util.Executors.MAIN_EXECUTOR;
import static com.android.launcher3.util.Executors.UI_HELPER_EXECUTOR;
import static com.android.quickstep.TaskAnimationManager.ENABLE_SHELL_TRANSITIONS;

import android.os.RemoteException;
import android.util.Log;
import android.view.IRecentsAnimationController;
import android.view.SurfaceControl;
import android.view.WindowManagerGlobal;
import android.window.PictureInPictureSurfaceTransaction;

import androidx.annotation.NonNull;
@@ -39,6 +43,7 @@ import java.util.function.Consumer;
 */
public class RecentsAnimationController {

    private static final String TAG = "RecentsAnimationController";
    private final RecentsAnimationControllerCompat mController;
    private final Consumer<RecentsAnimationController> mOnFinishedListener;
    private final boolean mAllowMinimizeSplitScreen;
@@ -74,7 +79,16 @@ public class RecentsAnimationController {
        if (mUseLauncherSysBarFlags != useLauncherSysBarFlags) {
            mUseLauncherSysBarFlags = useLauncherSysBarFlags;
            UI_HELPER_EXECUTOR.execute(() -> {
                if (!ENABLE_SHELL_TRANSITIONS) {
                    mController.setAnimationTargetsBehindSystemBars(!useLauncherSysBarFlags);
                } else {
                    try {
                        WindowManagerGlobal.getWindowManagerService().setRecentsAppBehindSystemBars(
                                useLauncherSysBarFlags);
                    } catch (RemoteException e) {
                        Log.e(TAG, "Unable to reach window manager", e);
                    }
                }
            });
        }
    }