Commit Graph
15 Commits
Author SHA1 Message Date
Vasily 9ff4863f3e Add branch filtering to all CI providers 2020-04-12 00:52:31 +02:00
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
ykearaandVasily 97066e453c fixed audio override key unset issues (#374)
* fixed audio override key unset issues

* Add apt-transport-https to CircleCI config

CircleCI fails with
E: The method driver /usr/lib/apt/methods/https could not be found.

when attempting to get the LLVM key.
This is suspected to happen because of an update to the image.

Co-authored-by: Vasily <vautkin@teknik.io>
2020-03-15 13:56:41 -05:00
Vasily a560810747 Downgrade gcc version on AppImage build to 7 from 9
As described in issue
https://github.com/OpenVR-Advanced-Settings/OpenVR-AdvancedSettings/issues/266
the gcc-9 libstdc++ version is not included in Ubuntu 18.04 or
derivatives, which leads to a runtime error.

gcc-7 is the oldest version that has c++17 support. If we didn't need
C++17 support then we could use gcc-5, which is included with Ubuntu
14.04.
2019-08-07 12:53:20 +02:00
Vasily 885c0b2004 Clean up CircleCI config 2019-07-04 16:44:31 +02:00
Vasily dbecf100b8 Change CircleCI to use g++-9 instead of g++-7 2019-07-04 16:44:31 +02:00
Vasily b68ce1a583 Remove clang --version from CircleCI
It is not guaranteed that the `clang` binary is used (`clang-8` instead,
for example) and versions are output by QMAKE anyway.
2019-07-04 16:44:31 +02:00
Vasily 8df1eb6f19 Add versioning to Linux artifacts and change CI image
The circleci/buildpack-deps:xenial contains python, which is needed for
the version changing script.
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 6a7e5804bf Add CircleCI AppImage building
This builds on GCC for no reason in particular.
2019-07-04 16:44:31 +02: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 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 89eb37ed15 Add clang-tidy to circleci 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