OSDN Git Service

Make sure cleanup is always done when task is removed
authorAndrii Kulian <akulian@google.com>
Fri, 6 Jan 2017 00:53:19 +0000 (16:53 -0800)
committerAndrii Kulian <akulian@google.com>
Fri, 6 Jan 2017 19:06:19 +0000 (11:06 -0800)
commit45a61fe5296d6fd3b9e2872c5dfc8d01f6a5b455
treeed548ba6346b1d036a31e01f13949a4e4eaa3ebb
parentafa10b809784d2874eeca746332f62ea09109f09
Make sure cleanup is always done when task is removed

When Stack#removeImmediately() was called it also recursively
called Task#removeImmediately(), which remove tasks from stack.
This lead to Task#mStack reference being nullified, but task
dim layer user was still registered in DimLayerController.
Therefore there was a crash when dim layer animation occured.

This CL moves most of the logic from Task#removeIfPossible() to
Task#removeImmediately() to make sure that cleanup is performed
every time when task is removed.

Change-Id: Id8d72dc8c66b9eeefbf5c918cf0a0df4ea027fde
Fixes: 34052466
Test: bit FrameworksServicesTests:com.android.server.wm.TaskStackTests
Test: #testStackRemoveImmediately
services/core/java/com/android/server/wm/DimLayerController.java
services/core/java/com/android/server/wm/Task.java
services/tests/servicestests/src/com/android/server/wm/TaskStackTests.java