Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 49772749 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Revert "InputManagerService: Do not remove input channel when disposing monitor""

parents c2d51007 874f00fd
Loading
Loading
Loading
Loading
+2 −13
Original line number Diff line number Diff line
@@ -3230,7 +3230,7 @@ public class InputManagerService extends IInputManager.Stub
     * Interface for the system to handle request from InputMonitors.
     */
    private final class InputMonitorHost extends IInputMonitorHost.Stub {
        private IBinder mToken;
        private final IBinder mToken;

        InputMonitorHost(IBinder token) {
            mToken = token;
@@ -3238,23 +3238,12 @@ public class InputManagerService extends IInputManager.Stub

        @Override
        public void pilferPointers() {
            if (mToken == null) {
                throw new IllegalStateException(
                        "Illegal call to pilferPointers after InputMonitorHost is disposed.");
            }
            nativePilferPointers(mPtr, mToken);
        }

        @Override
        public void dispose() {
            // We do not remove the input monitor here by calling nativeRemoveInputChannel because
            // it causes a race in InputDispatcher between the removal of the InputChannel through
            // that call and the InputChannel#dispose call (which causes an FD hangup) from the
            // client (b/189135695).
            //
            // NOTE: This means the client is responsible for properly closing the InputMonitor by
            // disposing the InputChannel and all its duplicates.
            mToken = null;
            nativeRemoveInputChannel(mPtr, mToken);
        }
    }