I need to just replace SDL entirely to fix this. LowLevelWindow is all that remains.
It's possible that this causes problems if something in SDL or SM absolutely must be run in the main thread. One thing to consider is lowering the main thread's precedence.