Also, it seems to create a separate listener thread just to pump the messages, which I'm not sure I like.
I could imagine SDL supports new event types by requiring the user to create _yet_ another thread, which waits for e.g. network events, then submits them to the SDL main event queue.