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>
This commit is contained in:
2026-10-07 23:32:00 +02:00
co-authored by Claude Opus 5.5
parent ec82b5fead
commit bbb3d1ba0e
2 changed files with 42 additions and 0 deletions
+32
View File
@@ -234,6 +234,38 @@
(`steam://` URL) → own app key needed (option 2); our working directory and binary →
enough.
**Result on the Frame (2026-10-07, deploy with `ec82b5f`):** SteamVR accepts our manifest
(no error) but keeps using Steam's entry for the key:
`source: "steam" launch type: "url" working dir: PropertyNotSet binary: PropertyNotSet
URL: "steam://launch/1009850/openvroverlay" auto-launch: true`.
- **Consequence:** the native build needs its own app key (option 2, DESIGN.md 2a,
follow-up). Design pending.
- **Side effect:** `--force-install-manifest` switched auto-launch on for Steam's key. At the
next SteamVR start, SteamVR may launch `steam://launch/1009850` (the uninstalled Steam
version). To be switched off again.
- OVRAS itself was started by `install.sh` and keeps running (not yet checked in the
dashboard, T2).
### Fix: debug output only with debugSymbolsAndLogs (2026-10-07)
- **Problem:** the log filled with `[D] updateAllPulseData done.` about every 11 ms (8399
lines in 6 s). `AudioTabController::eventLoopTick()` reads the microphone's mute state on
every tick, and every read calls `updateAllPulseData()`
(`AudioManagerPulse_internal.h:312`).
- **Cause (regression in `qt6`):** on `master` the message was easylogging's `LOG(DEBUG)`,
and the Debug level was disabled unless built with `debugSymbolsAndLogs`
(`ENABLE_DEBUG_LOGGING`). `qt6` switched to `qDebug()` and lost that; the constant
`debugLoggingEnabled` in `setup.cpp` was left unused, so all 46 `qDebug()` calls were
always active.
- **Fix (`setup.cpp`, `setUpLogging()`):** without `ENABLE_DEBUG_LOGGING`,
`QLoggingCategory::setFilterRules("*.debug=false")`. `QT_LOGGING_RULES="*.debug=true"`
takes precedence and turns debug output on again without a rebuild.
- **Result:** cross build and package succeed, `Qt_6_PRIVATE_API` without `QVulkan*`: 0.
- **Not tested yet:** on the Frame (log without `[D]` lines; with `QT_LOGGING_RULES` with
them).
- **Open for R6/T10:** each tick makes three synchronous PulseAudio queries (server info,
all sinks, all sources) for the mute state. Not changed now.
### Test checklist on the Frame (step 5)
Deploy: `build_scripts/steamframe/deploy-to-frame.sh <user>@<frame>` (SteamVR running).
+10
View File
@@ -1,6 +1,7 @@
#include "setup.h"
#include <QtLogging>
#include <QtDebug>
#include <QLoggingCategory>
#ifdef ENABLE_DEBUG_LOGGING
constexpr auto debugLoggingEnabled = true;
#else
@@ -382,4 +383,13 @@ void setUpLogging()
f = fopen( "AdvancedSettings.log", "a" );
qSetMessagePattern("[%{if-debug}D%{endif}%{if-info}I%{endif}%{if-warning}W%{endif}%{if-critical}C%{endif}%{if-fatal}F%{endif}] %{time process}: %{message}");
originalMessageHandler = qInstallMessageHandler( mainQtMessageHandler );
// Debug output only in builds with debugSymbolsAndLogs, as on master
// (easylogging's Debug level was disabled otherwise). Some qDebug() calls
// run on every tick (e.g. "updateAllPulseData done."). The environment
// variable QT_LOGGING_RULES="*.debug=true" takes precedence over this and
// turns them on again without a rebuild.
if constexpr ( !debugLoggingEnabled )
{
QLoggingCategory::setFilterRules( "*.debug=false" );
}
}