Merge "Call InputEventReceiver.dispose from the right thread"

This commit is contained in:
Tiger Huang
2019-12-25 05:26:07 +00:00
committed by Android (Google) Code Review
2 changed files with 6 additions and 1 deletions

View File

@@ -25,6 +25,7 @@ import android.util.SparseIntArray;
import dalvik.system.CloseGuard;
import java.lang.ref.Reference;
import java.lang.ref.WeakReference;
/**
@@ -86,6 +87,7 @@ public abstract class InputEventReceiver {
/**
* Disposes the receiver.
* Must be called on the same Looper thread to which the receiver is attached.
*/
public void dispose() {
dispose(false);
@@ -109,6 +111,7 @@ public abstract class InputEventReceiver {
mInputChannel = null;
}
mMessageQueue = null;
Reference.reachabilityFence(this);
}
/**

View File

@@ -198,7 +198,9 @@ class TaskPositioningController {
}
void finishTaskPositioning() {
mHandler.post(() -> {
// TaskPositioner attaches the InputEventReceiver to the animation thread. We need to
// dispose the receiver on the same thread to avoid race conditions.
mService.mAnimationHandler.post(() -> {
if (DEBUG_TASK_POSITIONING) Slog.d(TAG_WM, "finishPositioning");
synchronized (mService.mGlobalLock) {