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.
* 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.
* Have clang and libc++ working.
If any clang users run into problems, remember to have libc++ and libc++abi set up.
Fixes
stepmania/src/arch/ArchHooks/ArchHooks.h:37:27: error:
variable has incomplete type 'tm'
virtual void SetTime( tm ) { }
^
/usr/include/wchar.h:83:8: note: forward declaration of 'tm'
struct tm;
^
* Add noexcept to swap.
See https://github.com/stepmania/stepmania/commit/e860773799f01d02f281c8c39421e7e34658788d#commitcomment-32674320
* Use standard c++11 for handling unexpected exceptions
The cxxabi.h header can make linking difficult.
* macOS build fixes (#1773)
* macOS build fixes
Add missing headers
Threads_Pthreads: do not call pthread_setname_np() on macOS as it does not do
the same as on Linux
DebugStr() -> os_log()
* Make the project build with Makefiles on macOS
* Fix getting modifier key state on Mac (#1774)
We really need to clean up all Carbon calls here (many will go away when the
project switches to SDL2 for all platforms)
* Fix Xcode build; bump minimum version of macOS (#1775)
* Build fixes for the "Unix Makefiles" generator
Pass CMAKE_BUILD_TYPE to the external projects
* Fix indent
The X11 XKeyEvent structure (and others) include a timestamp
field, with 1ms resolution.
This was previously ignored causing the input timestamps to be
set to the middle of each frame.
If the timestamps are passed through then the event timestamps are
not coupled to the framerate and the polling issues are resolved.
* Initialise variables to ensure input thread is started
m_bShutdown was not initialised. This meant that the input
thread would never be started seemingly at random.
In my case m_bShutdown was always false when running in fullscreen
but not in windowed mode for some reason
* Avoid crash in ~LightsDriver_SystemMessage
This will avoid a crash caused by the fact LIGHTSMAN is destroyed
after the other MAN objects
* Rework code path for turning lights off on exit
Calls to LightsDriver::reset removed from each driver to avoid any crashes
LightsDriver::reset renamed to Rest to match surrounding style
Added LightsManager::TurnOffAllLights, called before XXXMAN objects are deleted
* Add LightsDriver::reset
Function will reset all lights to off
Function needs to be called by each of the driver implementations
as needed during destruction
* Reset lights to off on exit
* Use XRandR 1.2 to set fullscreen resolution for single output
Squash of roothorick's PR #497
(also includes Kyzentun's CMake changes from PR #716)
* Cherry-pick json c++1x stuff (b9e3d7174e)
* Cherry-pick c++11 support from 5bba5c0038 and 9f8b045309
* rework Linux (X11) fullscreen, improve display-related Graphics Options
Implement option to select between monitors for exclusive fullscreen mode
on X11 (using XRandR 1.2), or use a fullscreen borderless window.
Reimplement resolution/refresh rate/display mode-related option rows
using Lua, update choices dynamically so only known-good groupings of
resolution/refresh rate/aspect ratio can be selected.
Minimally update Windows/MacOS LowLevelWindow implementations to support
changes made for Linux side. Fullscreen Borderless Window/multi monitor
support from X11 not implemented for those in this commit.
* allow forcibly disabling xinerama use on Linux
When libXinerama is available, SM tries to use it to find the proper
monitor indexes to use to set _NET_WM_FULLSCREEN_MONITORS (on borderless
fullscreen). xfwm4 seems to assume that monitors are numbered in increasing
order from left to right (rather than using the Xinerama-assigned numbers),
so _NET_WM_FULLSCREEN_MONITORS misbehaves on Xfce.
This commit bypasses use of libXinerama, and instead forces SM to induce fullscreen
on the desired monitor in the backup, hacky way: remove all window hints, move window
to desired monitor, then add _NET_WM_STATE_FULLSCREEN hint. This works on
mutter and Xfce.
* Remove multiple warnings on redundant define.
This used to be hard-coded due to pthread related items, but now it's dynamically determined.
* fix _fallback menu behavior for unrecognized aspect ratios
* Fix error recreating existing FS texture
* Bump deployment target to 10.7 to use libc++ on XCode 8
* Add explicit casts to please clang
* Update changelog
* XInput support for the DirectInput driver
The XBox360 controller driver for windows has a flaw where the DirectInput backwards-compatible driver registers dance pad arrows as a hat and will not allow opposite arrows to be pressed at the same time. This is not a problem in the XInput interface since the arrows are registered as a DPad and each arrow is a button.
This patch adds XInput support for the DirectInput driver. On initialization XInput controllers will be detected and registered first, followed by enumerating DirectInput devices. During DirectInput enumeration any XInput-capable controllers will be bypassed so that they aren't registered twice.
* Fix joystick input for xinput driver
Needed to compensate for deadzones, magnitude of the inputs, and that the Y axis was reversed.
* Remove unnecesarry using statement for vectors