The last built makes the issue worse :cThe problem is that the game was written to use interrupts. When the port to SDL was made the SDL_PollEvent in a loop happens in the main loop. There is a queue, but it queues in the same thread very inefficiently. What I did was limit the number of events that can happen in a single loop and flush the rest out. Im attaching another experimental that is slightly different. The real fix would be to make the queue threadsafe and g the events from another thread.
It's also possible this is a red herring and Im chasing the wrong thing.