From 8d0910c59106e11970db3ae20c252fd63cbf1bb7 Mon Sep 17 00:00:00 2001 From: Toshiki Kikuchi Date: Mon, 6 Feb 2023 20:17:15 +0900 Subject: [PATCH] Skip starting no-longer-collecting transition This CL prevents WindowOrganizerController from starting a transition which is no longer collecting. Bug: 266152068 Test: Open heavy app, and switch back and forth between tablet and clamshell Change-Id: Ia3937aa886809ac71f6afbc8c413455dd0e5e76f (cherry picked from commit 17754df7b7cacc56b6b684cd237cb108d20176cf) --- .../com/android/server/wm/WindowOrganizerController.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/services/core/java/com/android/server/wm/WindowOrganizerController.java b/services/core/java/com/android/server/wm/WindowOrganizerController.java index f9592cc466815..7e1f34b79ed47 100644 --- a/services/core/java/com/android/server/wm/WindowOrganizerController.java +++ b/services/core/java/com/android/server/wm/WindowOrganizerController.java @@ -315,6 +315,13 @@ class WindowOrganizerController extends IWindowOrganizerController.Stub } transition = mTransitionController.createTransition(type); } + if (!transition.isCollecting()) { + Slog.e(TAG, "Trying to start a transition that isn't collecting. This probably" + + " means Shell took too long to respond to a request. WM State may be" + + " incorrect now, please file a bug"); + applyTransaction(wct, -1 /*syncId*/, null /*transition*/, caller); + return transition.getToken(); + } transition.start(); transition.mLogger.mStartWCT = wct; applyTransaction(wct, -1 /*syncId*/, transition, caller);