From 31b40fc1ef793d2a547609cc380d764e17d17ae9 Mon Sep 17 00:00:00 2001 From: Stan Grams Date: Sun, 1 Mar 2026 18:14:56 +0100 Subject: [PATCH] [fix](trx-frontend): gate RDS display updates on WFM mode updateRdsPsOverlay was called on every spectrum frame (25 Hz) regardless of mode, doing 15+ DOM element lookups and text updates even in USB/AM/CW/etc. The server-side RDS DSP already only runs in WFM; align the client: - Spectrum SSE handler: only increment rdsFrameCount and call updateRdsPsOverlay when lastModeName === "WFM" - Mode change: call resetRdsDisplay() when switching to or from WFM so the overlay and RDS panel are cleared promptly Co-Authored-By: Claude Sonnet 4.6 Signed-off-by: Stan Grams --- .../trx-frontend/trx-frontend-http/assets/web/app.js | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/trx-client/trx-frontend/trx-frontend-http/assets/web/app.js b/src/trx-client/trx-frontend/trx-frontend-http/assets/web/app.js index 16d2667..4fe8ac5 100644 --- a/src/trx-client/trx-frontend/trx-frontend-http/assets/web/app.js +++ b/src/trx-client/trx-frontend/trx-frontend-http/assets/web/app.js @@ -1444,6 +1444,9 @@ function render(update) { modeEl.value = modeUpper; if (modeUpper === "WFM" && lastModeName !== "WFM") { setJogDivisor(10); + resetRdsDisplay(); + } else if (modeUpper !== "WFM" && lastModeName === "WFM") { + resetRdsDisplay(); } lastModeName = modeUpper; updateWfmControls(); @@ -3692,11 +3695,13 @@ function startSpectrumStreaming() { try { lastSpectrumData = JSON.parse(evt.data); lastSpectrumRenderData = buildSpectrumRenderData(lastSpectrumData); - rdsFrameCount++; pushOverviewWaterfallFrame(lastSpectrumData); refreshCenterFreqDisplay(); scheduleSpectrumDraw(); - updateRdsPsOverlay(lastSpectrumData.rds); + if (lastModeName === "WFM") { + rdsFrameCount++; + updateRdsPsOverlay(lastSpectrumData.rds); + } } catch (_) {} }; spectrumSource.onerror = () => {