The 2 seconds is arbitrarily chosen. The problem seems to be that
Valve's own overlays are not being initialized before custom overlays,
leading to the Desktop overlay sometimes not being present when our
overlay initializes.
The second if statement inside the first one checking a second time is
definitely a little disgusting, but for now it gets the job done.
The 4.0 default was arbitrarily chosen by whoever decided to initialize
the variable in the class.
Since the OpenVR initialization code is no longer inside the
overlaycontroller there is no need for it to be available during object
construction. Therefore it doesn't make sense to have it be an object.
The shutdown call was completely removed because shutdowns are handled
by an OpenVR event that calls the relevant shutdown code. The destructor
for the old object was never called, removing it adds clarity to the
actual operation of the code and also removes unnecessary code.
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.