Commit Graph
100 Commits
Author SHA1 Message Date
Vasily 38a2765b10 Add proper exit to shutdown 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.
2019-03-02 09:45:33 +01:00
Vasily 3211379844 Fix installer not putting default manifests in correct folder
Fixes this
https://github.com/OpenVR-Advanced-Settings/OpenVR-AdvancedSettings/issues/80

Including things with
File "FILE\*.json"
includes the file in the base directory. Including it with /R
recursively includes the directory.
2019-02-28 21:16:53 +01:00
Vasily b75957fbaa Fix typo in .gitattributes 2019-02-28 21:16:53 +01:00
Vasily 1ea554ccb4 Update docs on building on Linux 2019-02-28 21:16:53 +01:00
Vasily da25e58cbb Add clang-tidy, create Linux build script
clang-tidy is currently set up with errors for all checks that do not
warn. This is to prevent regressing the repo.

Gradually these warnings should be removed in order to prevent further
regresssions in warnings that do not have many occurences.
2019-02-28 21:16:53 +01:00
Vasily dbb1ab70e5 Clarify cast in easylogging++
`tval.tv_usec` is a (signed) `long` and `ssPrec->m_offset` is an
`unsigned int`. Clang warns upon realizing that we are attempting to
divide a signed `long` with an `unsigned int`.

Casting the `long` to `unsigned long` makes both operands `unsigned` and
allows for auto conversion to `size_t`.

The `size_t` cast is to make it apparent that the cast is correct.
2019-02-21 18:48:53 +01:00
Vasily 4814c4686f Add brackets to optimize statement
Not having brackets forces the compiler to see the statement as (xdelta
* 360.0) * 8.0, which requires two `mulsd` operations. Adding the
brackets only requires one.

More details here
https://github.com/OpenVR-Advanced-Settings/OpenVR-AdvancedSettings/pull/87
2019-02-21 18:48:53 +01:00
Vasily 90ad7e7270 Remove extra parens 2019-02-21 18:48:53 +01:00
Vasily 2da88237f2 Remove -Wmissing-variable-declaration from GCC
GCC does not support it.
2019-02-21 18:48:53 +01:00
Vasily 81ae0efd1c Add -Wmissing-variable-declarations to all clang/gcc compilers 2019-02-21 18:48:53 +01:00
Vasily 9ab0b1d62d Remove -Wextra-semi for GCC
It is not currently supported yet by GCC.
2019-02-21 18:48:53 +01:00
Vasily 9d46358309 Add -Wzero-as-null-pointer-constant and fix occurences 2019-02-21 18:48:53 +01:00
Vasily 896559cc20 Add -Wextra-semi and fix occurences 2019-02-21 18:48:53 +01:00
Vasily d66e50e318 Fix wrongly placed parens 2019-02-21 18:48:53 +01:00
Vasily a93c7500d3 Fix GCC -Werror=conversion
Was mistakenly cast to long long unsigned int instead of double.
2019-02-21 18:48:53 +01:00
Vasily e99b36f610 Fix GCC -Werror=conversion in easylogging++ 2019-02-21 18:48:53 +01:00
Vasily c8709888d0 Add -Wno-sign-conversion to GCC and clang
The auto generated Qt MOC .cpp files contain warnings that can't be
fixed.
2019-02-21 18:48:53 +01:00
Vasily dacfe05425 Fix -Wconversion 2019-02-21 18:48:53 +01:00
Vasily cff2fc7eba Fix more -Wfloat-conversion warnings 2019-02-21 18:48:53 +01:00
Vasily b861ae0075 Fix -Wfloat-conversion warnings 2019-02-21 18:48:53 +01:00
Vasily 29d41b4ed0 Add -Wconversion to GCC and Clang
clang-msvc spams warnings from the moc .cpp files that include Qt
headers.
2019-02-21 18:48:53 +01:00
Vasily 775d0e0e36 Fix -Wsign-conversion warnings in easylogging++ 2019-02-21 18:48:53 +01:00
Vasily cfefec59e3 Fix -Wsign-conversion warnings 2019-02-21 18:48:53 +01:00
Vasily bc8ab72363 Fix clang -Wdouble-promotion cast 2019-02-21 18:48:53 +01:00
Vasily 60b9f71b9a Fix gcc -Wdouble-promotion warnings
For some reason GCC uses the float version of sqrt even though all
arguments and results are floats.
2019-02-21 18:48:53 +01:00
Vasily edf14b6bf9 Fix clang -Wdouble-promotion
gcc instance failed before compiling.
2019-02-21 18:48:53 +01:00
Vasily 4d06360c92 Fix gcc and clang -Wdouble-promotion 2019-02-21 18:48:53 +01:00
Vasily 85fbbbbd42 Gcc and clang fix for -Wdouble-promotion 2019-02-21 18:48:53 +01:00
Vasily 8444a4972b Attempt different fix for clang -Wdouble-promotion 2019-02-21 18:48:53 +01:00
Vasily 400654898b Fix gcc -Wdouble-promotion issues 2019-02-21 18:48:53 +01:00
Vasily 88dad1087f Fix clang -Wdouble-promotion issues 2019-02-21 18:48:53 +01:00
Vasily ec014a1e74 Add -Wdouble-promotion switch to clang/gcc compilers
It introduces a lot of ugly casts. Long term the floats should probably
be changed to doubles everywhere since we're only compiling for 64 bit
x86.
2019-02-21 18:48:53 +01:00
Vasily fe3bbc2959 Remove -Weffc++ from GCC
The "should be initialized in the member initialization list" is
incorrectly implemented on GCC.

https://stackoverflow.com/questions/14002454/can-i-ignore-the-gcc-warning-foom-bar-should-be-initialized-in-the-member-i
2019-02-21 18:48:53 +01:00
Vasily 0caff37251 Add -Weffc++ switch to clang/gcc 2019-02-21 18:48:53 +01:00
Vasily 473e928106 Refactor common switches into file 2019-02-21 18:48:53 +01:00
Vasily 106727a5b9 Remove -Wmost from GCC
-Wmost is a clang only switch.
2019-02-21 18:48:53 +01:00
Vasily fddae4278b Add more recommended switches
Commented out switches still give errors.
2019-02-21 18:48:53 +01:00
Vasily ac614c36e6 Replace -pedantic with -Wpedantic 2019-02-21 18:48:53 +01:00
Vasily d87338d195 Add -pedantic to Linux compilers
clang-msvc does not support -pedantic.
2019-02-21 18:48:53 +01:00
Vasily 82ac83d649 Add -Wextra to supported compilers 2019-02-21 18:48:53 +01:00
Vasily cc4f0d4bc8 Remove unneeded -Xclang 2019-02-21 18:48:53 +01:00
Vasily 34204d2441 Add -Wnon-virtual-dtor and resolve issues
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.
2019-02-21 18:48:53 +01:00
Vasily 60bd0a54c1 Fix shadowed variable in easylogging++.cc
The _var was chosen because it conflicts with the naming convention in
the rest of the file.

Fixing the error was easier than getting GCC to ignore errors in one
file, or using a pragma to mute the warning.
Introducing a GCC pragma would require disabling C4068 on MSVC (unknown
pragma).
2019-02-21 18:48:53 +01:00
Vasily 5c70aba098 Revert easylogging++ include and attempt changing easylogging++.cc 2019-02-21 18:48:53 +01:00
Vasily 940ad48923 Attempt -i switch in order to ignore warnings in file 2019-02-21 18:48:53 +01:00
Vasily 9019270df8 Refine compiler system includes for different platforms
MSVC seems to be the only platform that doesn't have a non-experimental
way to include files that don't give warnings.
2019-02-21 18:48:53 +01:00
Vasily 7234e2ba6c Convert Linux only cast from old style 2019-02-21 18:48:53 +01:00
Vasily 1b6cc47238 Add .. to linux include paths 2019-02-21 18:48:53 +01:00
Vasily 4ed6e80645 Include third party headers system headers for clang/g++ 2019-02-21 18:48:53 +01:00
Vitaly acb666a142 Remove old style casts and enable warnings for them 2019-02-21 18:48:53 +01:00
Vasily 81af2b9c72 Add -Wshadow and solve warnings 2019-02-21 18:48:53 +01:00
Vasily 89e026e714 Rename declaration parameter to fit definition 2019-02-21 18:48:53 +01:00
Vasily fdc096bb61 Add recommended compiler switches
From
https://github.com/lefticus/cppbestpractices/blob/master/02-Use_the_Tools_Available.md#MSVC
The '/w14619' switch creates errors in qglobal.h and qvector.h.
2019-02-21 18:48:53 +01:00
Vasily 68a72ded1f Add whole program optimization to MSVC 2019-02-21 18:48:53 +01:00
Vasily a7706c1b0b Remove generated banner from .pro file
The banner does not add anything to the file and is only wasted space.
2019-02-21 18:48:53 +01:00
Vasily ab25124d7b Move source files and resources file into separate .pri files 2019-02-21 18:48:53 +01:00
Vitaly 4b48d051c8 Refactor Qt project file into compiler specific subfiles
Encapsulating compiler specific options in a separate file
makes it easier to reason about what is going to happen on
a specific qmake call.

clang-msvc and msvc are separate because they don't support
exactly the same compiler switches.
2019-02-21 18:48:53 +01:00
Vasily adcbb474c5 Add Qt project files to .gitignore 2019-02-21 18:48:53 +01:00
username223 4784347826 Merge pull request #84 from OpenVR-Advanced-Settings/ivrinput-ptt
Move the Push To Talk system to the new IVRInputs
2019-02-20 20:04:09 +01:00
Vasily f49ade20a4 Fix bug in MirrorDeviceSelector.qml
It was mistakenly referring to the playback device list, instead of the
mirror device list.
2019-02-16 17:59:59 +01:00
Vasily 60418279b5 Remove unused Ptt component 2019-02-16 17:59:17 +01:00
Vasily 6142e1a032 Remove commented out code in PttButtons.qml 2019-02-16 15:18:01 +01:00
Vasily ae47f06447 Remove deprecated features from root page 2019-02-16 15:11:32 +01:00
Vasily bb90e7a48b Remove deprecated AudioPage features from readme 2019-02-16 15:11:32 +01:00
Vitaly c62c85a08f Remove deprecated elements from AudioPage
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.
2019-02-16 15:11:32 +01:00
Vitaly 3c59a2b2ae Move push to talk bindings to overlaycontroller
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.
2019-02-16 15:11:32 +01:00
Vitaly 28cf033bec Add PushToTalk action 2019-02-16 15:11:32 +01:00
Vasily 56b5f516ac Update windows build docs with recommended Qt version 2019-02-16 14:48:27 +01:00
Vasily 7ef8d35459 Update Qt version on AppVeyor
The 5.11.2 version has been removed from AppVeyor leading to all builds
failing due to lack of Qt install. The 5.12 folder is symlinked to the
newest Qt version, preventing the need for changes during small updates
and preventing failures when versions have been removed.

This solves
https://github.com/OpenVR-Advanced-Settings/OpenVR-AdvancedSettings/issues/53
2019-02-16 14:45:16 +01:00
username223 ca67502fc5 Remove the Accessibility Tab completely from the app (#79)
See
https://github.com/OpenVR-Advanced-Settings/OpenVR-AdvancedSettings/issues/27

The Accessibility tab was made redundant with the implementation of the
new playspace/room/universe tab in
https://github.com/OpenVR-Advanced-Settings/OpenVR-AdvancedSettings/issues/60

The tab inherited from the PttController class, which required changes
in order to work with the new IVRInput system. See
https://github.com/OpenVR-Advanced-Settings/OpenVR-AdvancedSettings/issues/51
for more about the IVRInput system.

Removing the page now at an early state is going to make it easier to
refactor the PttController since only one class is inheriting it,
instead of two. Since the Accessibility tab is going to be removed
anyway, it makes sense to remove it now.
2019-02-03 12:33:43 -06:00
Vasily 2f07a987bf Add .gitattributes file
.svg files were not treated as binary which means they were spamming up
the diff log.

Bash files were not being pulled with LF line endings, which means they
couldn't be run by Windows Subsystem for Linux.

Bash files were renamed .sh to easily allow them to be recognized by
both .gitattributes and humans.

Taken from https://github.com/alexkaratarakis/gitattributes.
2019-02-02 16:37:50 +01:00
Vasily c662334a17 Remove unneeded imports from .pro file 2019-02-02 16:09:07 +01:00
Vasily a4ecb0b114 Convert images to use .qrc file, move images
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.
2019-02-02 16:09:06 +01:00
Vasily e0768a38b3 Move checkmark and back arrow into .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.
2019-02-02 16:09:02 +01:00
Vasily 76507bd602 Move common elements into /common/ and change imports
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.
2019-02-02 16:09:01 +01:00
username223 4fc038630c Merge pull request #77 from OpenVR-Advanced-Settings/ptt-controller-rework
Refactor AudioPage into separate components
2019-02-02 16:04:15 +01:00
Vasily 1a1697eafe Update AudioPage image
Some things have been knocked out of alignment because they were
manually adjusted using integer literal values.
2019-02-01 20:40:14 +01:00
Vasily b01425d745 Fix qml files not being added in Qt Creator
The missing backslashes continued the line, without them the additional
lines were not being included in the += call.
2019-02-01 20:24:02 +01:00
Vasily 083e85cf59 Refactor profile buttons and popups
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.
2019-02-01 20:15:51 +01:00
Vasily e0bff66cec Move other PTT buttons into the PttButtons component
The other components were not organized together with the remaining Ptt
buttons. This creates unnecessary separation between related buttons.
2019-02-01 19:49:12 +01:00
Vasily bcd14cdddf Remove unneeded property from AudioNewProfileDialog
The line was an invalid alias, crashing the application on launch.
2019-02-01 19:40:26 +01:00
Vasily b810be3eb8 Refactor PTT buttons into separate file
The PttControllerConfigDialog was not used by anything else, hence it
makes sense to move it into a more limited scope.

The PttControllerConfigDialog file itself is only used by AudioPage and
AccessibilityPage. Since the AccessibilityPage is going to be removed
the PttControllerConfigDialog should be moved into the audio_page
folder.
2019-02-01 19:28:18 +01:00
Vasily 394482e63a Fix regression in profile popups
Without the public ids on the pop ups other buttons that used the
buttons did not work.
2019-02-01 19:16:18 +01:00
Vasily fc06c46144 Refactor audio proximity enable button into separate file 2019-02-01 19:08:26 +01:00
Vasily a29e6baaf7 Remove id tags from refactored components
The ids are not needed within the AudioPage, since everything has been
encapsulated inside the components.
2019-02-01 16:38:49 +01:00
Vasily 5dc28972ae Refactor microphone volume slider into separate file, clean up AudioPage
An if statement hadn't been transferred to the mirrorVolume slider,
hence it was moved now.
2019-02-01 16:38:49 +01:00
Vasily 5aa5d84345 Indent PTT controls on AudioPage
The PTT controls were grouped in a ColumnLayout with the microphone
device and volume controls. Grouping the microphone controls together
mirrors what is done with the mirror device controls.
2019-02-01 16:38:48 +01:00
Vasily 86599fbd29 Refactor audioMicNameCombo 2019-02-01 16:38:47 +01:00
Vasily c36e9cd168 Move mirror slider into own file
The mirror selector is a sub part of the volume slider. This could be
changed in the future to have the slider be a top level component that
contains both selector and slider.
2019-02-01 16:38:46 +01:00
Vasily 56d866a236 Refactor mirrorAudio dropdown and move logic into
The logic is better abstracted away inside the class.
2019-02-01 16:38:45 +01:00
Vasily cd4a6d6994 Refactor audio device selector into separate file
For now the way to go is to have the mirror device and audio device
selectors as different components instead of trying to inherit from a
single component and filling in the necessary function calls.

This is because some function calls are nested inside other components
and would be very messy. Perhaps in future commits the selectors will
inherit from a single parent.
2019-02-01 16:38:44 +01:00
Vasily b6ffa8d30d Move dialog boxes into separate folder
Setting the default audio profile has also been moved into the separate
dialog box. This should not change anything and no bugs were found in
testing, however I have no idea how objects in QML/C++ are initialized
or if our current codebase is created with this in mind.
2019-02-01 16:38:44 +01:00
Vasily 33768028b4 Move AudioPage.qml into separate directory
This encapsulates the page and separates it and the files it uses from
the rest of the application.
2019-02-01 16:38:42 +01:00
Vasily 6c31fde308 Update OpenVR from 1.1.3b to 1.2.10
The openvr/bin/linux64 directory also contained a file called empty.dir.
This has been removed because it was an empty file.

VREvent_Scroll has been renamed to VREvent_ScrollSmooth, and not
VREvent_ScrollDescrete because the second one will keep scrolling after
having let go of the scroll (tested on Vive controller). This feels
weird when done on a Vive controller and so the first option was chosen.
The first option also feels more like the old system.

Even though the version jump is weird this is the next release.
2019-01-31 21:45:54 +01:00
Vasily 70e7556de8 Move components into their own directories
This prevents the import "utilities_page" from also importing the
subcomponents. They should not be in the global namespace.
2019-01-27 10:29:57 +01:00
Vasily 629c4e2edb Separate individual components into qml files
This removes the massively indented logic in the previous version.
Notice that individual components will still be imported with an
import "utilities_page". Therefore anything except UtilitiesPage.qml
should be in a separate folder.
2019-01-26 20:29:14 +01:00
Vasily a94c37b858 Move UtilitiesPage and media_keys into separate folder
The QML at the moment is a giant mess. Moving pages into individual
folders and properly abstracting the sub components of the pages will
allow for much easier development and better error messages.
Additionally it will prevent polluting the global namespace. Really, all
the reasons for avoiding globally available values and using
abstractions in regular programming also come into play here.
2019-01-26 18:32:29 +01:00
username223 25d2854248 Merge pull request #64 from OpenVR-Advanced-Settings/compiler/readme-updates
Update Travis CI to use clang in addition to g++, update readme, update standard to C++17
2019-01-24 06:51:05 +01:00
username223 b661e3f8b3 Merge branch 'master' into compiler/readme-updates 2019-01-23 22:51:44 +01:00
Vasily 5f17377329 Add explanation to disabled warning in .pro file
MSVC does not yet support non experimental ways of selectively disabling
warnings for some files.
2019-01-23 22:44:09 +01:00