summaryrefslogtreecommitdiff
path: root/core/java/android/view/ViewRootImpl.java
diff options
context:
space:
mode:
authorTreeHugger Robot <treehugger-gerrit@google.com>2020-05-11 05:56:35 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2020-05-11 05:56:35 +0000
commit488cd2c4ff9425fd74d278ba191d64bfc114df6a (patch)
treedece83721b6f09fed660132169d5d50858b651f7 /core/java/android/view/ViewRootImpl.java
parent53ed707827f48bdb183add5f08d285dc06e9c705 (diff)
parent03d65a72748a03e07c677911eeae325cd03cbf96 (diff)
Merge "Fix consumer closed input channel cause an error occurred (1/2)" into rvc-dev
Diffstat (limited to 'core/java/android/view/ViewRootImpl.java')
-rw-r--r--core/java/android/view/ViewRootImpl.java11
1 files changed, 7 insertions, 4 deletions
diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java
index a17af6c90617..172197c8f396 100644
--- a/core/java/android/view/ViewRootImpl.java
+++ b/core/java/android/view/ViewRootImpl.java
@@ -4638,14 +4638,17 @@ public final class ViewRootImpl implements ViewParent,
mInputQueueCallback = null;
mInputQueue = null;
}
- if (mInputEventReceiver != null) {
- mInputEventReceiver.dispose();
- mInputEventReceiver = null;
- }
try {
mWindowSession.remove(mWindow);
} catch (RemoteException e) {
}
+ // Dispose receiver would dispose client InputChannel, too. That could send out a socket
+ // broken event, so we need to unregister the server InputChannel when removing window to
+ // prevent server side receive the event and prompt error.
+ if (mInputEventReceiver != null) {
+ mInputEventReceiver.dispose();
+ mInputEventReceiver = null;
+ }
mDisplayManager.unregisterDisplayListener(mDisplayListener);