This implements client side window decorations of our windows. The title
bar of our windows is now drawn by Android and we simply map out the
title bar area hit test area to SDL to detect when the other wants to
move the window or resize it.
dbus-cpp was dropped from 18.04 as it is not maintained anymore so we
should migrate to something more stable with a long term perspective.
libsystemd fits in nicely here as it has a nice and clean dbus
implementation which is battle tested and can be easily integrated into
our existing C++ code base.
Systems with GLVND load the actual EGL implementation in a different way
when the GL driver is dlopen'ed and therefor we need to tell GLVND which
vendor implementations are available on the system. As snapd is not yet
exposing this to the snap we have to ship a small set of configs on our
own until that is fixed.
We're using the desktop helpers now to setup all necessary environment
variables for GL drivers etc. and only keep a small set of extra changes
on top for things the desktop-helpers don't support yet.
This allows building against the same version of GLM across all targets
and not deal with API changes of newer GLM versions which introduce
regressions. Long term we want to migrate away from GLM and stick to a
minimal self-written subset.
Newer Ubuntu systems tend to not provide a libGLESv1_CM.so.1 anymore. As
we're not required to have a GLESv1 implementation (only a few older
Android apps are using GLESv1) we can as easy fix avoid loading a real
GLESv1 implementation and assign dummy functions instead to all relevant
GLESv1 API calls. In the future we want to switch to a GLESv1->GLESv2
translator as the Android emulator does.
OpenGL ES is enough for our purpose and we don't want to maintain a
unneeded OpenGL ES to GL translator. All target drivers have proper
OpenGL ES support these days so no need to depend on GL anymore.
If we expose too many extensions we don't support ourself yet (like
EGL_ANDROID_native_fence_sync) then we get unexpected corruption or
missing screen updates in our rendered output.
Fixes#635, #457, #692, #582 (and a few more duplicates)