From bbb3d1ba0eadc6ef0d3a2b15d8a44de1664fa6e5 Mon Sep 17 00:00:00 2001 From: Matzman Date: Wed, 7 Oct 2026 23:32:00 +0200 Subject: [PATCH] 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 --- docs/steamframe/PROGRESS.md | 32 ++++++++++++++++++++++++++++++++ src/utils/setup.cpp | 10 ++++++++++ 2 files changed, 42 insertions(+) diff --git a/docs/steamframe/PROGRESS.md b/docs/steamframe/PROGRESS.md index e55b719..7c557ee 100644 --- a/docs/steamframe/PROGRESS.md +++ b/docs/steamframe/PROGRESS.md @@ -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 @` (SteamVR running). diff --git a/src/utils/setup.cpp b/src/utils/setup.cpp index f1b7dd6..25504cc 100644 --- a/src/utils/setup.cpp +++ b/src/utils/setup.cpp @@ -1,6 +1,7 @@ #include "setup.h" #include #include +#include #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" ); + } }