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

Commit 5a14ba68 authored by Sriharsha Allenki's avatar Sriharsha Allenki Committed by Badhri Jagan Sridharan
Browse files

Increase debounce time for DISCONNECT processing

During composition switch, some host PCs are taking more
time in processing the disconnect of previous functions and
enumerating the new functions. This causes the delay in
receiving the CONNECTED uevent which triggers the fallback
to default composition. Prevent this by increasing the
debounce time from 1s to 3s (which is the average time
taken by these PCs to enumerate the new functions) for
device mode state update, while keeping the debounce time
for host mode as is at 1s.

Bug: 176779207
Test: Verified enumeration of device with the delay
Change-Id: I7ff58a1a9755939ccb26dad61969902ec91f2225
parent 80df223a
Loading
Loading
Loading
Loading
+6 −3
Original line number Original line Diff line number Diff line
@@ -170,7 +170,10 @@ public class UsbDeviceManager implements ActivityTaskManagerInternal.ScreenObser
    // Delay for debouncing USB disconnects.
    // Delay for debouncing USB disconnects.
    // We often get rapid connect/disconnect events when enabling USB functions,
    // We often get rapid connect/disconnect events when enabling USB functions,
    // which need debouncing.
    // which need debouncing.
    private static final int UPDATE_DELAY = 1000;
    private static final int DEVICE_STATE_UPDATE_DELAY = 3000;

    // Delay for debouncing USB disconnects on Type-C ports in host mode
    private static final int HOST_STATE_UPDATE_DELAY = 1000;


    // Timeout for entering USB request mode.
    // Timeout for entering USB request mode.
    // Request is cancelled if host does not configure device within 10 seconds.
    // Request is cancelled if host does not configure device within 10 seconds.
@@ -583,7 +586,7 @@ public class UsbDeviceManager implements ActivityTaskManagerInternal.ScreenObser
            msg.arg1 = connected;
            msg.arg1 = connected;
            msg.arg2 = configured;
            msg.arg2 = configured;
            // debounce disconnects to avoid problems bringing up USB tethering
            // debounce disconnects to avoid problems bringing up USB tethering
            sendMessageDelayed(msg, (connected == 0) ? UPDATE_DELAY : 0);
            sendMessageDelayed(msg, (connected == 0) ? DEVICE_STATE_UPDATE_DELAY : 0);
        }
        }


        public void updateHostState(UsbPort port, UsbPortStatus status) {
        public void updateHostState(UsbPort port, UsbPortStatus status) {
@@ -598,7 +601,7 @@ public class UsbDeviceManager implements ActivityTaskManagerInternal.ScreenObser
            removeMessages(MSG_UPDATE_PORT_STATE);
            removeMessages(MSG_UPDATE_PORT_STATE);
            Message msg = obtainMessage(MSG_UPDATE_PORT_STATE, args);
            Message msg = obtainMessage(MSG_UPDATE_PORT_STATE, args);
            // debounce rapid transitions of connect/disconnect on type-c ports
            // debounce rapid transitions of connect/disconnect on type-c ports
            sendMessageDelayed(msg, UPDATE_DELAY);
            sendMessageDelayed(msg, HOST_STATE_UPDATE_DELAY);
        }
        }


        private void setAdbEnabled(boolean enable) {
        private void setAdbEnabled(boolean enable) {