You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Follow-up to #3695 (GPU-composite slice flags). The maintainer decision on the AA visual trade-off was option (a) — ship as-is: at rest a flag is a GPU sprite (grayscale AA); on hover/focus it's a live widget (ClearType subpixel AA), so flag text rendering changes on hover. This issue tracks revisiting that for consistency.
The improvement: option (b) — consistent AA, no hover-pop
Force QFont::NoSubpixelAntialias on the live flags too, so both states render text the same way (grayscale). This removes the visible grayscale↔ClearType "pop" when the cursor enters/leaves a flag, at the cost of slightly softer text on the live flag. It keeps the full −45% main-thread CPU win from #3695 — it's purely a rendering-consistency change (~1 line on the live-flag font hint).
Why deferred, not done now: shipping (a) first gets the #3617 performance win to users immediately (it's the flag-composite cost behind the laptop-lag reports). The AA consistency is a polish refinement, not a correctness issue, so it's tracked here for a follow-up once (a) has had real-world exposure and we can judge whether the hover-pop is actually bothersome in practice.
Scope: the live-flag rasterization path in SpectrumWidget (where a flag promotes to a live VfoWidget on hover/focus/popup) — apply NoSubpixelAntialias to match the at-rest sprite.
Related minor follow-ups raised in the #3695 review (non-blocking)
80 ms blank on first slice creation.addVfoWidget() shows the widget but doesn't grab a sprite immediately; if the new flag isn't the live flag, it can render as neither widget nor sprite until the refresh timer fires (~80 ms). A grabFlagSprites() at the end of addVfoWidget() closes the gap. (Usually masked because new slices are typically the active/live flag.)
Follow-up to #3695 (GPU-composite slice flags). The maintainer decision on the AA visual trade-off was option (a) — ship as-is: at rest a flag is a GPU sprite (grayscale AA); on hover/focus it's a live widget (ClearType subpixel AA), so flag text rendering changes on hover. This issue tracks revisiting that for consistency.
The improvement: option (b) — consistent AA, no hover-pop
Force
QFont::NoSubpixelAntialiason the live flags too, so both states render text the same way (grayscale). This removes the visible grayscale↔ClearType "pop" when the cursor enters/leaves a flag, at the cost of slightly softer text on the live flag. It keeps the full −45% main-thread CPU win from #3695 — it's purely a rendering-consistency change (~1 line on the live-flag font hint).Why deferred, not done now: shipping (a) first gets the #3617 performance win to users immediately (it's the flag-composite cost behind the laptop-lag reports). The AA consistency is a polish refinement, not a correctness issue, so it's tracked here for a follow-up once (a) has had real-world exposure and we can judge whether the hover-pop is actually bothersome in practice.
Scope: the live-flag rasterization path in
SpectrumWidget(where a flag promotes to a liveVfoWidgeton hover/focus/popup) — applyNoSubpixelAntialiasto match the at-rest sprite.Related minor follow-ups raised in the #3695 review (non-blocking)
addVfoWidget()shows the widget but doesn't grab a sprite immediately; if the new flag isn't the live flag, it can render as neither widget nor sprite until the refresh timer fires (~80 ms). AgrabFlagSprites()at the end ofaddVfoWidget()closes the gap. (Usually masked because new slices are typically the active/live flag.)QWidget::renders every non-live flag every 80 ms regardless of whether content/geometry changed or whether the panadapter is visible. Pausing the timer when!isVisible()and/or skipping the re-raster when nothing dirtied would reduce the idle floor further on slow hardware — exactly the case perf(panadapter): main-thread CPU ~75–95% is Qt CPU-side compositing of translucent child widgets over the QRhiWidget (render is 0.4 ms) #3617 cares about.Refs #3695, #3617.
🤖 Generated with Claude Code