Commit Graph
225 Commits
Author SHA1 Message Date
Vasily bb30a7c041 Add framework for implementing Linux AudioManager
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.
2020-04-08 22:44:12 +02:00
Vasily af572ee0b7 Move AudioManager into audiomanager folder 2020-01-18 00:17:28 +01:00
Vasily 7be55a2199 Move remaining PttController items into AudioTabController 2020-01-16 00:09:09 +01:00
Vasily 0bc77b2fd0 Completely remove features related to Desktop Overlay
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.
2020-01-16 00:09:09 +01:00
Vasily 491671937a Remove warning C4242 from MSVC
Qt 5.14.0 introduces a new `qfloat16.h` file that spams this error, with
no way of ignoring it on MSVC.
2020-01-15 14:01:47 +01:00
Vasily ac4b01273e Add basic PKGBUILD for building on Arch/Manjaro
PKGBUILD format is described on the Arch wiki
https://wiki.archlinux.org/index.php/Creating_packages

Arch User Repository is described here
https://wiki.archlinux.org/index.php/Arch_User_Repository

The AUR package can be found here
https://aur.archlinux.org/packages/ovras/
2020-01-15 14:01:47 +01:00
Vasily e71bc7b1b3 Add settings object API
Documentation is in `docs/specs/Settings-Object-API.md`.
2020-01-08 21:18:45 +01:00
Vasily c2dff4c863 Move internal settings headers into /internal/ dir
The additional headers are not intended to be public. To reinforce that
it is a bad idea to include these they are put into the /internal/
directory.
2019-12-10 08:28:41 +01:00
Vasily c8a0e41bfe Remove features related to desktop overlay translation
The feature was killed by Valve and is not likely to come back.
2019-12-10 08:28:41 +01:00
Vasily 724bc51a15 Fix indentation in resources.pri 2019-12-10 08:28:41 +01:00
Vasily c1690056cc Add settings API and specification
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.
2019-12-03 08:26:10 +01:00
Vasily 2578f3b32e Update version string to 4.0.1-dev from 4.0.1-release
String was mistakenly not changed back after release bins were built.
2019-11-30 18:14:49 +01:00
ykeara 07835facec changed colors to not default to dim on some systems during upgrade (#319) 2019-11-10 17:36:24 -06:00
ykeara 2bddedf372 4.0.0 release (desktop overlay adjustment removal, bindings tab/button change, documentation update) (#315)
* removed desktop overlay tab moved width to steamvrtab

* added binding page launch button

* changed binding page button location

* removed binding page and associated resources

* clarified functionality via text update to desktop width box

* updated version string

* changed string to release

* updated photos

* updated ivrscreenshot

* updated documentation

* removed old qml references

* added missing actions to documentation

* hid audio profiles
2019-11-10 10:31:43 -06:00
ykeara 05c12cd4a0 Re-Add color overlay (#311)
* 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%
2019-11-08 14:45:26 -06:00
Kung-vr d0c2520b64 Add bindings page and apply autosave chaperone on offset clamp 2019-10-27 00:39:01 +09:00
ykeara 4b0be27ff6 Video and Steam VR Tab Re-work + keyboard binds (#289)
* changed color overlay to use gain values instead of overlay

* moved SS/Motion smoothing, and filter to video tab

* began refactor of steamVR qml page

* added misc toggles to steamvr tab

* added imu fallback and DND, and some qml formatting

* added Camera Settings to SteamVR page

* changed formatting to minimize height

* added video profiles cleaned up steamvr controller

* delta comparison change

* added profiles for video

* fixed display bug in colorgroupbox and removed frivoulous saves

* removed commented code

* added custom keybind buttons
2019-09-01 02:35:00 -05:00
Vasily 2a935895e9 Update Linux build docs for Arch/Ubuntu, add logging calls to Qmake
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.
2019-08-23 15:12:58 +02:00
ykeara 746aa23207 Ssbugs, removal of re-vive, and dashboard loop tick (#277)
* minor changes

* debugging testing

* removed un-needed log calls

* moved some logic to run only when dashboard is active

* fixed linker error

* added casting

* removed revive tab

* removed stray revive reference

* removed revive from sources

* fixed misc formatting issues

* added newline
2019-08-22 13:40:48 -05:00
Vasily 1b5e092cc2 Update run-clang-format script
Upstream updated the script with error checking for incorrect
clang-format executable.
2019-08-19 03:10:32 +02:00
Vasily 8e43629bb2 Move windeployqt to Qmake
`qmake` is better suited for finding `windeployqt`, since it's in the same
directory as `qmake` on windows.

`qmake` is also better suited for finding the build target
(release/debug) vs third party scripts.

`windeployqt` is being forced to run in `cmd` because the syntax is
different for running executables in powershell, which means
`windeployqt` won't be executed and runtime or package errors will
occur.

With the removal of the windeployqt call the deploy step is no longer
needed for building on Windows, since all previous deploy tasks are now
handle by Qmake.
2019-07-30 10:45:28 +02:00
Vasily 94bbd30890 Strip whitespace from version_string line
This prevents stray newlines from getting in there.
2019-07-30 10:45:28 +02:00
Vasily b5d69c589c Make Qmake copy package files instead of OS scripts
Described in commit 97e203fd89e7cb54c7ce96ce779b2e8cb6ac1374

The python functions are no longer needed since the python script
doesn't handle file copy any more.
2019-07-24 10:54:55 +02:00
Vasily 46c8a62565 Make Qmake copy package files instead of OS scripts
Described in commit 97e203fd89e7cb54c7ce96ce779b2e8cb6ac1374

The linux directory in package_files is included even on Windows install
for simplicity and because it takes up less than 1KB.
2019-07-24 10:54:55 +02:00
Vasily 6e088a6ec8 Make Qmake copy licenses instead of OS scripts
Described in commit 97e203fd89e7cb54c7ce96ce779b2e8cb6ac1374

Linux was not including any license files by mistake.
2019-07-24 10:54:55 +02:00
Vasily 9fc22ccbb4 Make Qmake copy Readme instead of OS scripts
Described in commit 97e203fd89e7cb54c7ce96ce779b2e8cb6ac1374
2019-07-24 10:54:55 +02:00
Vasily cbac2f9539 Make Qmake copy res directory instead of OS scripts
Since Qt 5.6 Qmake has supported the (undocumented) file_copies
function.

Moving to an OS independent version is superior for obvious
reasons.

Use in
https://stackoverflow.com/questions/3984104/qmake-how-to-copy-a-file-to-the-output/54162789#54162789

Uses the same interface as the INSTALLS function described here
https://doc.qt.io/qt-5/qmake-advanced-usage.html#installing-files

Implemented in the file_copies.prf file found here
https://code.qt.io/cgit/qt/qtbase.git/log/mkspecs/features/file_copies.prf
2019-07-24 10:54:55 +02:00
Vasily 6e710a75b3 Add docstrings for new Windows build functions 2019-07-24 10:54:55 +02:00
Vasily 112e611709 Make Windows build script traverse paths for Qt Location
The environment variable still has precedence, and will be used before
all other versions if it exists.
2019-07-24 10:54:55 +02:00
Vasily 275d0813b5 Make whitespace updates to windows build files 2019-07-24 10:54:55 +02:00
Vasily 872a4a9ed8 Update version string to 3.2.0-dev 2019-07-04 20:26:24 +02:00
Vasily e70f66b2cb Make python version script remove newlines from version string
Previously newlines would remain and foul up the other build tools.
2019-07-04 18:25:44 +02:00
Vasily 696ddfdea4 Fix bug in python version script that lead to error 2019-07-04 17:44:07 +02:00
Vasily c9a85f45f6 Update version string to 3.2.0-release 2019-07-04 17:44:07 +02:00
Vasily 64ee6639ed Update version string to 3.2.0-RC2 2019-07-04 17:44:07 +02:00
Vasily 614278d7ec Add compiler check for g++-9 to qmake 2019-07-04 16:44:31 +02:00
Vasily 329b4e7331 Add SVG support to AppImage, move files instead of copying 2019-07-04 16:44:31 +02:00
Vasily 0121e75947 Manually add QtQuick.Dialogs to Linux AppImage
https://github.com/probonopd/linuxdeployqt/issues/25

As detailed there QtQuick/Dialogs and QtQuick/LocalStorage are not
automatically packaged.
2019-07-04 16:44:31 +02:00
Vasily ad05b29392 Add qml path to AppImage
This should solve problem

https://github.com/probonopd/linuxdeployqt/issues/25

with error message

QML Error:
file:///tmp/.mount_OpenVRtQNnT6/usr/bin/res/qml/common/mainwidget.qml:1:1:
module "QtQuick" is not installed
2019-07-04 16:44:31 +02:00
Vasily c08ab71e63 Remove AppImage new glibc switch 2019-07-04 16:44:31 +02:00
Vasily 6a7e5804bf Add CircleCI AppImage building
This builds on GCC for no reason in particular.
2019-07-04 16:44:31 +02:00
ykeara 0cc0cec1e5 32rc1 (#231)
* fixed UI error showing mic muted/un-muted

* fixed mute glitch (work-around)

* changed to RC status
2019-06-25 00:05:32 -05:00
Vasily 201cb40359 Add variable for clang-tidy name when building on Linux
Travis has the correct clang-tidy version of 7, while CircleCI needs
clang-tidy-7.
2019-06-24 19:21:14 +02:00
Vasily ec5a575d93 Add g++-8 specific version support. 2019-06-24 19:21:14 +02:00
Vasily e8af73db28 Make CircleCI have feature parity with TravisCI and update docs
Unnecessary line from Bionic 18.04 was removed.

A proper version guard was included for clang. Xenial currently ships
3.8.
2019-06-24 19:21:14 +02:00
Vasily b65657b371 Add clang passing build
CircleCI Xenial does not come with an up to date version of Clang. It is
therefore required to get the newest version (8). The .pri file has
quickly been edited to be similar to the g++ version check.
2019-06-24 19:21:14 +02:00
Vasily aade86ed47 Add circleci g++ passing build
CircleCI does not compile with --jobs.
2019-06-24 19:21:14 +02:00
ykeara b473f4d7db Prox sensor re-integration (#220)
* added arbitrary orientation change

* removed commented code

* updated to OVR 1.4.18

* changed two instances using new to init via array

* moved prox sensor action to haptic instead of Misc

* fixed json file, added prox sensor back for mic mute/un-mute

* added proximity sensor to audio and haptic chaperone warnings

* fixed fall-through behavior

* removed bad prox code
2019-06-14 12:33:56 -05:00
Vasily 8e34e9edca Update documentation for DBUS on Linux 2019-06-05 19:57:44 +02:00
Vasily f958026453 Add DBUS support for media keys 2019-06-05 19:57:44 +02:00