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

Commit dfc798ea authored by Harry Cutts's avatar Harry Cutts
Browse files

Reland "uinput: delay from the end of the last delay"

(This CL is unchanged. Original description below, with additional Test:
line)

If we want to inject events at predictable times, then we shouldn't take
into account the current time when scheduling those injections, as that
could change depending on the timings of the process sending commands to
uinput. Instead, assume that the process sending commands intends time
offsets between injected events to be as close as possible to those
specified in the delay commands.

Bug: 310958309
Test: atest CtsInputTestCases
Test: atest android.view.cts.input.InputDeviceKeyLayoutMapTest \
            android.view.cts.input.InputDeviceSensorManagerTest \
            --rerun-until-failure=10
Change-Id: Ieaa4f2f06d5e0b7d13abc3afa474948996db7c0a
parent 1c6ce068
Loading
Loading
Loading
Loading
+2 −1
Original line number Original line Diff line number Diff line
@@ -154,7 +154,8 @@ will be unregistered. There is no explicit command for unregistering a device.


#### `delay`
#### `delay`


Add a delay to command processing
Add a delay between the processing of commands. The delay will be timed from when the last delay
ended, rather than from the current time, to allow for more precise timings to be produced.


| Field         | Type          | Description                |
| Field         | Type          | Description                |
|:-------------:|:-------------:|:-------------------------- |
|:-------------:|:-------------:|:-------------------------- |
+1 −2
Original line number Original line Diff line number Diff line
@@ -149,8 +149,7 @@ public class Device {
     * @param delayNanos  Time to delay in unit of nanoseconds.
     * @param delayNanos  Time to delay in unit of nanoseconds.
     */
     */
    public void addDelayNanos(long delayNanos) {
    public void addDelayNanos(long delayNanos) {
        mTimeToSendNanos =
        mTimeToSendNanos += delayNanos;
                Math.max(SystemClock.uptimeNanos(), mTimeToSendNanos) + delayNanos;
    }
    }


    /**
    /**