Another rat's nest; I'm still not entirely satisfied.
This introduces "frame personalities": one for embedded frames (emscripten), one for handheld devices and everything else that doesn't really work with windows (android), and one for everything else. For now these affect which frame options are configurable by the user and what values they are forced to take if they are not configurable, and whether optimal scale is guessed based on screen size.
Also introduce a future TouchUI config node to allow switching between normal and touch-optimized UI on android. Again, because chromebooks and other android devices with mouse and keyboard support are a thing.
Also enable debugging of debug builds of android. It took me hours to attach a stupid debugger to the process; see:
- https://www.sh-zam.com/2019/05/debugging-krita-on-android.html
- https://source.android.com/docs/core/tests/debug/gdb#app-startup
I also had to adb forward the port that lldb was supposedly talking to lldb-server over because otherwise it wouldn't attach; I don't get it either.
We can't rely on atexit, handlers registered with it are in a hard to establish ordering relationship with destructors of static and thread-local objects.