Details

Changing the global state would obviously cause issues for async
execution. This is the simplest solution for a simple problem.
We could also make the global theme access thread safe, e.g. using
thread-local storage for g_theme_state or by making state changes
(i.e. UI_SetTheme) scoped, so we can maintain a mutex. Figured it's
better to keep it simple though.