diff options
| author | 2022-03-07 22:14:48 +0800 | |
|---|---|---|
| committer | 2022-03-07 22:19:10 +0800 | |
| commit | db6d13cea7b1162c501d34aab372c9d74cbc4db7 (patch) | |
| tree | 3d3f198128dd486d936941dae313b8e955e24c87 /libs/androidfw/AttributeResolution.cpp | |
| parent | 1be9ef4fbeddf469340545074d84c4b0be00f04c (diff) | |
Fix incomplete removal of nested task
For example:
T0 - T1 - A1 <- iterator
T2 - A2
After calling A1.finishIfPossible(), the order may change to
T0 - T2 - A2
T1 - A1 <- iterator
So A1 is finished twice (no-op) and T0 can not be removed because
A2 is still alive. This part is solved by using a list to collect
first. And change the cleanup order to from bottom to top, which
avoid some unnecessary focus adjusting.
Another problem is that when removing last task of a parent task,
it only checks !mCreatedByOrganizer, so the removal request is
ignored. This is fixed by checking shouldRemoveSelfOnLastChildRemoval.
Fixes: 222722020
Test: atest TaskTests#testRemoveContainer_multipleNestedTasks
Change-Id: I3a5cb17be57fae758f57e2d2c669cc3727346ff8
Diffstat (limited to 'libs/androidfw/AttributeResolution.cpp')
0 files changed, 0 insertions, 0 deletions