How's input updated from the video thread?

Calling `SerialInterface::UpdateDevices()` lead to

* a non-obvious crash after not many frames

Calling `CoreTiming::ScheduleEvent(0, SystemTimers::et_SI)` lead to

* hang in `while (GpuRunningState)` because `fifo.CPReadWriteDistance` is stuck at 0