Commit Graph
22 Commits
Author SHA1 Message Date
matzmanandClaude Opus 5.5 d664f86945 Add layout diagnosis: font metrics in the log, --snapshot option
On the Steam Frame, the fixed 1200x800 QML layout overflows: about the
bottom quarter is cut off and the navigation icons overlap their text.
Forcing 96 DPI and switching the Quick Controls style didn't help, so the
cause has to be measured rather than guessed.

- SetWidget() logs the application font (family, pt, px), what 20 pt
  (MyText) is in px, the screen's DPI and the device pixel ratio.
- --snapshot <file> writes the rendered overlay (RenderBackend::readback)
  as PNG at most once per second while it is visible. A time interval,
  because OVRAS only renders when the scene changes. Written to a
  temporary file and renamed, so readers never see a partial file.
- run.sh passes arguments after the graphics API to the program.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 00:06:09 +02:00
matzmanandClaude Opus 5.5 bbb3d1ba0e Log debug output only in builds with debugSymbolsAndLogs
On master, easylogging's Debug level was disabled unless OVRAS was built
with debugSymbolsAndLogs (ENABLE_DEBUG_LOGGING). The qt6 branch switched
to qDebug() and lost that: debugLoggingEnabled was left unused, and all
debug output reached the log. On the Steam Frame it filled with
"updateAllPulseData done." about every 11 ms, as the audio tab reads the
microphone's mute state on every tick.

setUpLogging() now disables debug output through a logging filter rule.
QT_LOGGING_RULES="*.debug=true" takes precedence and turns it on again
for troubleshooting without a rebuild.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 23:32:00 +02:00
matzmanandClaude Opus 5.5 ec82b5fead Register the manifest when Steam already lists the app key
Steam writes every VR app the user owns into its generated
steamapps.vrmanifest, installed or not. Whoever owns OVRAS on Steam
therefore always has steam.overlay.1009850 registered, as a steam:// URL
without a working directory, and --force-install-manifest failed with
"Could not find working directory of already installed application:
VRApplicationError_PropertyNotSet" (found on the Steam Frame).

Such an entry has no manifest file to remove, so OVRAS now leaves it
alone and adds its own manifest. Whether SteamVR accepts a second
manifest for the key, and which entry it then uses, is not documented:
logApplicationEntry() logs what SteamVR reports for the key after
installing, so a test on the Frame shows it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 23:25:57 +02:00
Matthias JanetschekandClaude Opus 5.5 b22c35ae29 Manifest for Linux; connect as Background app where Utility is refused
- manifest.vrmanifest: binary_path_linux and binary_path_linux_arm. The
  Steam Frame's SteamVR reads only binary_path_linux_arm.
- handleManifests(): connect as Utility app first (works without a running
  SteamVR, e.g. from the Windows installer); if SteamVR refuses Utility apps,
  as on the Steam Frame, connect as Background app. Fail right away on other
  errors instead of going through initializeOpenVR()'s retry loop.
- main(): check --graphics-api before connecting to OpenVR, so a wrong value
  fails right away.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 13:42:16 +02:00
Matthias JanetschekandClaude Opus 5.5 4826686a4d Render through public Qt API: OpenGL and Vulkan backends, --graphics-api
Replace the QRhi rendering in OverlayController (private Qt API) with the
render backends of the vrdashboard template (src/render/), which use public
Qt API only (QQuickRenderTarget::fromOpenGLTexture / fromVulkanImage). The
binary then runs on another Qt 6 patch release, e.g. the Steam Frame's system
Qt.

The Vulkan backend also does what SteamVR requires and the QRhi path lacked:
the required instance/device extensions and the HMD's GPU (via
openvr_init::renderInterop()), VK_FORMAT_R8G8B8A8_UNORM, and the transition to
TRANSFER_SRC_OPTIMAL after each frame.

- New option --graphics-api opengl|vulkan (default opengl, no fallback).
- Shutdown() calls VR_Shutdown before the render target and Qt's device go
  (crash on the Steam Frame with Vulkan otherwise); it runs only once.
- Mouse y is flipped on every platform: SteamVR reports it in GL convention.
- Render delay 5 -> 16 ms (about 60 fps).
- GuiPrivate is no longer needed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 13:41:13 +02:00
ykearaandRTUnreal ca0ec3e07d Qt6 (#669)
* update qt6 upgrade progress

* add flawed addition for QRenderTarget and link needed libs

* update to better logging format

* move many assets and qml files into qrc

* get rid of deprecation messages

* remove additional deprecation notices

* make Qt6 finally render on desktop with some progress on vr

* initialize QRhi with QQuickRenderControl

* use default values to stop SegFaults

* fix compilation on windows

* add windows files for aiding in running exe

* fix formatting of testing qt.conf

* first attempt on using textures instead of files in AudioTabController

* Fix public/private access issue

---------

Co-authored-by: RTUnreal <unreal@rtinf.net>
2024-04-03 22:49:24 -05:00
ykeara dca1e18e0e CenterMarker Rotation Fix + Misc (#458)
* add native chaperone option

* refactored overlaywrapper error handling

* added reset all settings

* added reset all settings option

* clarified driver bounds language

* fixed naming  schema of turn settings

* fixed qml issue

* marked errors in settings

* fixed rotation of center marker and cleaned up

* ci test

* removed debugging code

* fixed comment

* fixed rotation.... made messy

* fixed crash when centermarker new was on at launch

* added settings to scroll view

* fixed some initialization issues w/ center marker and some race conditions

* updated Documentation to be more correct/concise about openGL rendering Information issue 457

* changed default behaviour of chaperone bounds to be un-checked to be consistant w/ other settings (default is unchecked)

* cleaned up code around centermarker overlay

* removed unused variables, changed scope of some existing

* code naming cleanup

* more rename

* updated Version strings for 5.1.1 release

* updated string to be more concise
2020-06-02 12:10:21 -05:00
Vasily 0c7c888c82 Update OpenVR from 1.8.19 -> 1.9.16 and remove Sync() calls
Release log:
https://github.com/ValveSoftware/openvr/releases/tag/v1.9.16
```
Removed sync function. Saving of settings is controlled automatically by
the system now. All existing calls to Sync can be deleted. Calls to sync
using old APIs do nothing.
```
2020-01-18 00:17:28 +01:00
Vasily 016e5ebc4a Add switch for enabling debug symbols and logs
Enabling the switch on release builds will optimize the binaries as
normal, but will still include debug symbols. This is advantageous for
bugs that do not show up in debug builds without optimizations.
2020-01-15 14:01:47 +01:00
ykeara 263759a0df Color overlay adjustment feature (#208)
* perf graph overlay/checkbox added

* added toggle Chaperone action

* toggle chaperone non-functional

* fixed chaperone toggle action const to once

* Added Proximity Sensor Action back-end, not implemented via logic Until fixed by valve

* added default WMR controller profile

* formated

* formated steamvrtabcontroller.h

* fixed un-intended change

* fixed audio profile Bug w/ changed devices

* fixed name being used as param instead of ID

* fixed loop logic in saveAudioProfile

* audio profile fix WIP defaults OVR integration

* fixed profile Saves, delete logic and mirror logic needed

* fixed QML format, added TODO message

* Fixed Audio Profile Behavior

* fixed qml reference error

* audiodeviceselector changed qml

* Removed some comments

* changed Visibility slider Minimum to 30% (steamVR minimum allowed)

* fixed mirror/playback same issue

* fixed Audio device refresh bug, removed currently un-used proximity logic (commented out)

* removed dead code

* fixed Manifest install/un-install behavior

* removed un-used param

* color overlay in prog

* video overlay basic functions added

* fixed qml errors

* fixed init order error and chaperone min init error

* fixed duplicate button id issue, init issue

* fixed log call w/ manifest

* removed commented log lines
2019-06-01 11:02:55 -05:00
ykeara 511b189efd Fixed Manifest Behavor (#199)
* fixed Manifest install/un-install behavior

* removed un-used param

* fixed double or in log msg
2019-05-18 12:00:32 -05:00
Vasily 387ae30899 Fix indentation with clang-format 8
AppVeyor automatically updated to LLVM 8 while everything else was on 7.
It is not possible to downgrade to LLVM 7 on AppVeyor, so we'll update
everything else to LLVM 8.
2019-04-19 15:29:18 +02:00
Vasily 2e42773529 Add special message to Qt handler
This makes it more obvious where an error came from.
2019-03-31 14:19:05 +02:00
Vasily 96513c6d07 Fix null pointer dereference in QtMessageHandler function
The `QMessageLogContext` is only filled out in debug builds. Release
builds will have null pointers in `file` and `line`. This causes any
error attempted to be logged to result in a null pointer dereference.

Since we never use debug builds anyway, simply removing the uses of
`file` and `line` makes sense.

Github issue
https://github.com/OpenVR-Advanced-Settings/OpenVR-AdvancedSettings/issues/139
2019-03-31 14:19:05 +02:00
username223 86fdc8f26f Refactor actions into separate action sets (#122)
* Fix indentation in action manifest

* Rename action sets to drop unnecessary prefix notation

Since the variable is in the action_sets namespace it does not make
sense to prepend it with an identifier for it being constant, or a set.

* Rename input keys to drop prefix notation

The vars are in a namespace that only contains constant inputs, it
doesn't make sense to prepend it to every var.

* Rename actions to drop prefixes

It is implicit that actions are const values for sets, therefore the
prefix is not needed.

* Remove unneeded action set member func

* Move active action set in preparation for more action sets

* Move action strings above class

Class is not able to use variables in namespaces, which is stupid.

* Move sets into member variable

* Split music into separate action set

* Convert action_manifest.json to spaces only

* Refactor actions into separate action sets

* Rename main set to haptic

* Reorder action sets

The haptics and misc sets are misc bindings.

* format

* fixed manifest path issue

* Change path concat to use QDir

The old way was not platform independent.

* Move accessibility actions to motion set

* Remove "(Held)" from action name

Might be confusing for end users.

* Replace slash with platform independent separator

* Make paths output native paths
2019-03-20 15:42:45 -05:00
Vasily 04c59d5f20 Convert setup to new paths 2019-03-19 16:10:35 +01:00
Vasily e1866e635f Convert logfile to use new paths functions 2019-03-19 16:10:35 +01:00
Vasily e04a9355ea Move log and settings file to APPDATA/AdvancedSettings-Team
Keeping the logfile in a separate folder did not make sense.
2019-03-11 11:44:14 +01:00
Vasily 783e8093bd Refactor logfile name to be variable 2019-03-11 11:33:48 +01:00
Vasily 2d6d482f2d Refactor log file location to use application strings 2019-03-11 11:32:44 +01:00
Vasily 5b9e94869c Move application strings into separate namespace
Them being in the overlay controller required them to be static, which
forces the compiler to give them a memory location at compile time. They
also don't really fit into the overlaycontroller.
2019-03-11 11:24:57 +01:00
Vasily d078bd88a4 Move definitions from header file to cpp file
Clang-tidy does not like definitions in header files unless they're
inline.
2019-03-10 23:12:26 +01:00