As far as I can tell, SDL_QuitSubSystem is not required, and SDL_Quit should automatically quit each subsystem. However, this stops the crash, so maybe there's some kind of race condition that this avoids.
They were using float values, but they should have been int values instead.
The numeric type conversion was causing some kind of data loss that resulted in wrong values being returned in some cases. In particular, arrow keys.
* Add SDL rumble
* Fix rumble
* whitespace fixins real (#2)
* whitespacing real.. please!
* nativecffi rumble thing fix lol
* Remove trailing whitespace.
* Use SDL's argument names and order.
* Standardize formatting.
* Make `SDLGamepad` fully static again, for simplicity.
Also, consistently use `find()` instead of array access, to avoid accidentally creating entries.
Also also, consistently use guard clauses instead of indenting.
* Make another guard clause.
* Update CFFI function signature.
* Use `clamp()` instead of `if` statements.
* Include required header for `std::clamp()`.
* Revert "Use `clamp()` instead of `if` statements."
`std::clamp()` was not available until C++17, and we'd like to continue supporting older versions.
This reverts commit 715a270f79.
* Revert "Include required header for `std::clamp()`."
This reverts commit f47aebf640.
* Tidy up.
* Document `Gamepad.rumble()`'s arguments.
* Don't limit rumble duration.
SDL apparently supports the full Uint32 range, so there's no reason for Lime to restrict it.
* Fix whitespace.
* Add rumble support in HTML5 (experimental).
---------
Co-authored-by: Cameron Taylor <cameron.taylor.ninja@gmail.com>
Co-authored-by: player-03 <player3.14@gmail.com>
For non windows platforms, we previously just passed char* into wstring,
which didn't perform the necessary conversion into utf32 which is
expected when hxcpp converts a wchar string to a hxstring on platforms
where wchar has 4 bytes.
If HOME is NULL, we cannot return here immediately, since we haven't
called `System::GCExitBlocking()`. This currently causes:
```
Critical Error: Allocating from a GC-free thread
```
This is already handled correctly for `USER` and `DOCUMENTS`, however
`DESKTOP` was missed out in f6e38208d3
Tested on macOS, Linux, and Windows. Works better with Haxe 5 than HashLink 1.12 did. This upgrade is easier than 1.14 and presumably 1.15, which we can still do later.
openal-soft assumes that aligned_alloc is available with c++17. Newer
android ndks set c++17 by default, however they do not expose
aligned_alloc without setting min sdk version to 28.
We can avoid this issue by forcing openal to be compiled with c++11.
Also note, we have HXCPP_CPP11 defined, however, hxcpp ignores this for
the android toolchain. This means we must set it explicitly
See:
f5e0eef34d/common/almalloc.cpp (L15)
Hxcpp doesn't respect HXCPP_CPP11 for android. We can avoid this issue just by adding -std=c++11 here. This resolves a conflict with openal soft 1.20.1 for android builds. This works because the library assumes c++17 and invokes a function that isn't available in android sdk below 28.
clang: warning: include path for libstdc++ headers not found; pass '-stdlib=libc++' on the command line to use the libc++ standard library instead [-Wstdlibcxx-not-found]