Since the @loader_path was replaced with @rpath, to correctly load
binaries from within a bundle app we need to add the Frameworks
subdirectory to the run path list.
- Replaced @executable_path by @rpath for more flexibility
- Updated freetype and sndfile libs as follow:
install_name_tool -id "@rpath/../Frameworks/freetype.framework/Versions/A/freetype" freetype
install_name_tool -id "@rpath/../Frameworks/sndfile.framework/Versions/A/sndfile" sndfile
* This fixes building on non-MSVC compilers for Windows since they don't
know `_tcsnlen()`.
* Changed logic so SFML tries to retrieve the paths from the user key
first, machine key second (typical behavior for most registry settings).
* Removed the registry key length checks since that check is performed
inside`RegOpenKeyEx()` anyway and cut-off keys might point to the wrong
keys.
* Updated the error string retrieval to properly handle errors.
RPATH is especially useful when running debug builds for testing on *nix
operating systems, because the binaries (e.g. examples) include library
runtime path information. This allows you to skip installing SFML to the
system or adjusting PATH variables/ld config.
When the finding a rectangle for a glyph at a particular character size,
if the glyph happens to be wider than the current texture size, but less
high than the unused height in the texture, the texture will not be
correctly doubled in size (since only the height is checked).
In practice, this only occurs when finding the rectangle for the *very
first* glyph (so the texture is at its default 128x128 size): otherwise,
the glyph would need to be unusually wide compared to its height to
trigger the bug.
This will trigger a debug assertion in Texture::update(). With assertions
disabled, there are knock-on effects and most text at that character size
will fail to render.
* This fixes duplicate TextEntered events and should properly handle
`AKEY_EVENT_ACTION_MULTIPLE` (including key down and key up events; as
far as possible; see comment). Unfortunately I don't have/know any IME
utilizing this, so can't test it.
* The back button is now mapped to the Escape key (best match without
adding new keys).
* The volume buttons are no longer intercepted by SFML and no longer
generate events.
* Android apps would still try to call `eglSwapBuffers()` even though
they don't have a valid surface right now (i.e. due to being inactive/in
background).