Source outputs must all be moved to new default source.
Reference topic
https://askubuntu.com/a/72076
* Adds microphone controls on Linux via PulseAudio (PA) for several
points in
https://github.com/OpenVR-Advanced-Settings/OpenVR-AdvancedSettings/issues/43.
It can not be overstated how unsuited the public AudioManager API is for
using the PA API.
It can also not be overstated how undocumented and horrible the PA API
is. The PA way of doing audio is very unlike the Windows way of doing
audio, which the AudioManager is heavily influenced by.
Since I don't have a Linux machine I have not been able to personally
test this. https://github.com/feilen/ has graciously helped with
testing.
PulseAudio is very undocumented and not very widely used for what we
need outside of official utilities. As such there's most likely a better
way of doing things than I've done.
Additional information can be found at
https://github.com/username223/pulseaudio-device-changing.
The "complex" PA API is asynchronous. Since our current AudioManager is
running synchronously and would not work asynchronously (functions are
expected to return valid data on function return) it is necessary to
massage the PA API until it runs synchronously.
This is done with a general workflow of
1. Register a callback function (`pa_context_get_source_info_list()`,
for example).
2. Run the PA loop through `customPulseLoop()`. This will trigger
any registered callbacks. Sometimes a `void*` is passed through the
callback that can be used for custom data. `successCallback()` uses
this to set the success variable.
3. Run the callback function and do required work.
4. Return to original function, do work or return values.
It is not possible to run a `customPulseLoop()` inside of an already
running loop (inside a callback), as this will lead to a PA assert
error on runtime.
As of SteamVR 1.10.1 the overlay width feature has been implemented by
Valve in the standard settings.
OpenVR features related to overlay translation have been removed and the
main reason for including them (multi monitor setups) have been solved
by Valve giving each screen an individual overlay.
The details of the API are in the `/docs/specsSettings-API.md` file.
The enums do not list all available settings, more are to be added as
the settings API replaces inline QSettings calls.
* fixed Chaperone toggle, toggle state on launch
* made update rates based on variable frame rate assuming 90 default
* added overlay color back in
* fixed opacity value not synching
* updated to ovr 1.8.19
* fixed license issue
* rolled back ovr update
* fixed overlay toggle state, formatting, and clamped max opacity to .85%
The page was not made with Arch in mind.
The currently required were tested on Manjaro, more packages may be
explicitly required due to the bare-bones nature of Arch.
Adds simple logging calls makes debugging easier.
The initial build script was basically ported over directly from
Windows. It was written because I at the time didn't understand
compiling on Linux, and the existing standards, very well.
Moving as many build components into a program specifically made for
building C++ makes everything much easier.
The old build script is still used on CI where control flow can only be
changed using environment variables.
`bear` and `clang-format` are only used on the CI, there's no reason to
include them here.
The media keys were only in the keyboard shortcuts file because their
implementation was the same. With Linux support incoming their
implementations are not necessarily the same.
On Ubuntu 16.04 and 18.04 it is not possible to get Qt 5.12 from the
official repo. You will need to get it from
https://launchpad.net/~beineri/+archive/ubuntu/opt-qt-5.12.2-bionic
which places the files in /opt. This leads qmake to including the files
as non system headers, which makes them spam errors. Adding them as
-isystem headers first prevents this.
The implementation is simple 3D vector scaling and addition. The
HmdMatrix34_t consists of a 3x3 rotation matrix and a 3D vector for
position.
The overlay position is only updated whenever a new overlay is changed
because we need the old overlay position in order to modify it. The
openvr call to get the position is only updated whenever you open the
menu.
A new page was created due to lack of space on the utilities page.
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.