Do not remove window if IWindow#resized is failed
Even DeadObjectException is thrown, it is not equivalent to the window is died (transaction failed by small size data will be DeadObjectException). Sometimes it may be caused by the binder buffer of process is temporarily full. If the window is removed directly but the process is still alive, the application client and window manager are out of sync. Especially if the window is important system window, e.g. status bar, notification shade, navigation bar, which might need to reboot to recover. Ideally, if the process is really dead, there should be a binderDied callback that also removes the window. The original purpose of the removal is to avoid display frozen (e.g. rotation) always timeout which is caused by resetting WindowState#mOrientationChanging in each layout traversal. Now the window states are still updated as "resized" has reported, so it won't block unfreeze display. Bug: 151814107 Bug: 147448299 Test: atest WindowStateTests#testReportResizedWithRemoteException Test: Hard code to throw RemoteException for a specified window and rotate the display. Change-Id: Id295456cc99ab9af30aa5fad2eedada6afb862a2
Loading
Please register or sign in to comment