Currently, in SDL2 (2.0.0), the timestamp member of the various SDL_Event data structures is filled in in SDL_PushEvent with a call to SDL_GetTicks. Thus, in most cases, timestamp records when the last time SDL_PumpEvents was called. This is not very useful. Instead, timestamp could record when the event actually occurred by propagating timestamps from the various OS event systems. This OS-timestamp would be much more useful to the application, since it gives the time the event actually occurred rather than the time that the application got around to reading it. Unless the application is very carefully written so that SDL_PumpEvents is called frequently with no long delays, the difference between the GetTicks-timestamp and the OS-timestamp will tend to be large–typically on the order of the frame rate, say 30 milliseconds, which is quite perceptible to the user, especially in a game.
Why is the GetTicks-timestamp used instead of propagating the OS-timestamp? At first glance, it looks like it would be straightforward to propagate the OS-timestamp.