Merge "Call InputEventReceiver.dispose from the right thread"
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user