From ac96052733c4c07f68f81c203fa05a05940c0f31 Mon Sep 17 00:00:00 2001 From: Jorim Jaggi Date: Thu, 22 Mar 2018 23:20:36 +0100 Subject: [PATCH] Add launch hint for RecentsAnimation We are starting an activity, so let's send launch hint to be faster and consistent with other activity launches. Test: Swipe up, check android.hardware.power in systrace Bug: 73651529 Change-Id: Ia8f925d94cf6969d2501e00b86fa91617d093916 --- .../com/android/server/am/RecentsAnimation.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/services/core/java/com/android/server/am/RecentsAnimation.java b/services/core/java/com/android/server/am/RecentsAnimation.java index 99337b83d0017..ad25099814d2a 100644 --- a/services/core/java/com/android/server/am/RecentsAnimation.java +++ b/services/core/java/com/android/server/am/RecentsAnimation.java @@ -23,6 +23,7 @@ import static android.content.Intent.FLAG_ACTIVITY_NO_ANIMATION; import static android.os.Trace.TRACE_TAG_ACTIVITY_MANAGER; import static android.view.WindowManager.TRANSIT_NONE; import static com.android.server.am.ActivityStackSupervisor.PRESERVE_WINDOWS; +import static com.android.server.wm.RecentsAnimationController.REORDER_KEEP_HOME_IN_PLACE; import static com.android.server.wm.RecentsAnimationController.REORDER_MOVE_HOME_TO_ORIGINAL_POSITION; import static com.android.server.wm.RecentsAnimationController.REORDER_MOVE_HOME_TO_TOP; @@ -87,6 +88,13 @@ class RecentsAnimation implements RecentsAnimationCallbacks { } } + // Send launch hint if we are actually launching home. If it's already visible (shouldn't + // happen in general) we don't need to send it. + if (homeActivity == null || !homeActivity.visible) { + mStackSupervisor.sendPowerHintForLaunchStartIfNeeded(true /* forceSend */, + homeActivity); + } + mStackSupervisor.getActivityMetricsLogger().notifyActivityLaunching(); mService.setRunningRemoteAnimation(mCallingPid, true); @@ -147,6 +155,12 @@ class RecentsAnimation implements RecentsAnimationCallbacks { synchronized (mService) { if (mWindowManager.getRecentsAnimationController() == null) return; + // Just to be sure end the launch hint in case home was never launched. However, if + // we're keeping home and making it visible, we can leave it on. + if (reorderMode != REORDER_KEEP_HOME_IN_PLACE) { + mStackSupervisor.sendPowerHintForLaunchEndIfNeeded(); + } + mService.setRunningRemoteAnimation(mCallingPid, false); mWindowManager.inSurfaceTransaction(() -> {