The old shutdown code did not correctly exit but instead just
continuously called the QApplication notify function until it
SEGFAULTed. This led to crashes whenever SteamVR was shut down. Users
with Windows Error Reporting turned on would get a 100+ MB crashdump
file along with increased shutdown time for SteamVR.
For clarity the shutdown functions should probably be collected in a
single function.
The IPolicyConfig file is a third party file and since it describes a
third party API we can't make changes to it. Adding it via the system
includes disables warnings on most compilers.
There are still many elements remaining from the old input system.
These have not been removed due to time constraints. They should
be removed as part of a general clean up process.
The PTT profile buttons have been replaced with a text telling users
to use the SteamVR bindings interface. This is for people who don't
read changelogs.
The old system used the old OpenVR input system which is
incompatible with the new IVRInput.
This change broke the AccessbilityTabController, but
that is to be removed because the functionality can be
found elsewhere.
All images have been moved to the /img/ folder in order to fully
separate qml from images. The .qrc file allows qml to use the images by
appending the qrc:/ prefix before the abstract path to the image.
Note that the .qrc file is also check at compile time, which further
enhances the confidence the lack of errors.
Some of the images are not used in the QML, but instead directly passed
through to the OpenVR API. These have not been added to the .qrc file.
The QRC file is a platform independant way of referring to resource
files. It allows the program to access resources in an abstract way
instead of the direct file path.
This is the first step towards moving all files to the new system.
Elements work like they've always done, this just moves the commonly
used components away from the global namespace.
The qmldir file still does something, although at this point it is
unknown exactly how it's used and whether or not it could be changed to
simplify imports across the block.
The popups have been moved inside the scope of the ProfileButtons. Since
the popups open based on the location of their parents, they are
currently opening underneath where they used to open.
Since the profiles and ptt settings do not work anyway, this is seen as
acceptable.