We need to enable all of the OS-specific profiles so the version numbers
of all the modules are bumped.
In turn this means we need to avoid calling the verify target during
release:prepare, as we can't build all the modules on any platform.
Similarly, we can't actually call the deploy target during
release:perform. We instead call `mvn -Prelease deploy` on each
supported operating system/architecture manually.
This is to make cross-compiling for i386 on amd64 easier, by adding
-m32/64 or -arch flags where appropriate.
This commit also adds a gcc linker on Linux and macOS, replacing the
default g++ linker. It's roughly equivalent, but means the shared
library has fewer dependencies (e.g. it doesn't link against libstdc++).
This commit clears framebuffers when they are created, copies the contents of
the previous framebuffer to the new framebuffer when resizing and moves all the
resizing code into the blit method. All of these help to reduce screen
corruption, although a small amount still remains if you resize quickly.
This fixes latency (and also screen corruption when resizing), as we blitted a
framebuffer that had already been displayed on the off-screen window rather
than the one that had just been rendered.
I was torn for a long time over whether to license under the GPL or
AGPL. I've settled on the GPL as I think it'd be quite hard to enforce
the AGPL (because of the nature of the RuneScape private server
community), and honest people would be at a disadvantage compared to
people who would ignore the additional provisions of the AGPL.
The *-natives modules are licensed under the LGPL as they are intended
to be linked with the proprietary client software, so the GPL would not
be appropriate.
I've decided to use v3 (and only v3) of the GPL. I don't like the 'or
later' clause as it means placing a great deal of trust in the FSF not
to change the overall intention of the license in future versions.