Game runs pretty close to fine, needed to use system libpng and haven't
attempted to use ffmpeg, however.
I'm seeing in the 50fps range in gameplay with no performance tweaks
but having set -mtune=cortex-a72. There's a lot of perf opportunities,
so consistent 60 is certainly within reason without too much pain.
If the supposed return address is a pointer to the beginning of an
executable page, and the page before is an oversized file mapping,
like vvar before vdso, the backtrace would be terminated by SIGBUS.
To avoid this, check not for readable, but for executable instead.
C:\Repos\StepMania\src\Grade.cpp(56): error C2440: 'type cast': cannot convert from 'double' to 'Grade' [C:\Repos\StepMania\Build\src\StepMania.vcxproj]
C:\Repos\StepMania\src\Grade.cpp(56): note: Conversions between enumeration and floating point values are no longer allowed
This change maps the new grade tiers evenly to the 7 old grade tiers to trigger the correct sound files.
It also extends that mapping to the grade tiers used for playing cheering for the top few tiers.
Before, this ended up calling a virtual method in the constructor,
which C++ does not allow, and I got weird crashes.
This removes a lot of unused code and gets rid of unnecessary abstractions.
The setjmp/longjmp error handling mechanism may fail with Microsoft C++ since
they utilize the same stack-unwinding mechanism with C++ exception handling.
Lua calling longjmp after luaD_rawrunprotected returns causes unpredictable
behaviour. On Windows x64 build, this causes lua_error to crash the whole
StepMania program.
Lua provides the same macros to utilize C++ throw/catch, which effectively
solve the problem. Just specify Lua library as C++ code to enable them.
Reference: https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/longjmp
The statistics are updated in the generic codepath, which is not used by
RageDisplay_Legacy::DrawLineStripInternal() when rendering smooth lines.
Note, that the output vertex count can differ a lot between smooth lines
(2) and non-smooth lines (~38 output vertices per input vertex), so
updating the statistics can not be done in RageDisplay::DrawLineStrip()
like it is donw for the other draw functions.
* Remove unused function
* Sort input devices on Linux
The readdir() function doesn't guarantee any specific ordering, so the
numbers of joysticks might change when restarting StepMania.
(Empirically this usually only happens after a reboot.)
Let's sort the input devices alphabetically before opening them to have
more consistent numbering and avoid annoying remapping of controllers.