changedSinceLastSync behaviour

Hi! Can you clarify changedSinceLastSync behaviour:

changedSinceLastSync is XR_TRUE if the value of currentState is different than it was before the most recent call to xrSyncActions. This parameter can be combined with currentState to detect rising and falling edges since the previous call to xrSyncActions. E.g. if both changedSinceLastSync and currentState are XR_TRUE then a rising edge (XR_FALSE to XR_TRUE) has taken place.

for example xrGetActionStateBoolean

is clear if the state changed since last xrSyncActions in this way:
0-1 (rising) 1-0 (falling)

but what if the state has changed like this:
0-1-0 (pressed and quickly released) or 1-0-1 (released and pressed)

changedSinceLastSync will not change?

can lastChangeTime be used to solve this?

Seems like changedSinceLastSync not changing would be the correct interpretation.

The action system isn’t really designed with sub-frame input recording in mind. I’m guessing most runtimes will buffer the input, and present it as pressed for a single frame in order to prevent the input from being lost.

The runtime might not fill in lastChangeTime if it doesn’t present a state change, so I wouldn’t rely on it.