mirror of
https://git.vladimir.cc/vladimir/ewsdr.git
synced 2026-08-25 17:27:32 +00:00
fix(display): смена банда не замораживает спектр/водопад ~0.7с
SetZoomPan вызывался из RestoreBand безусловно и переармировал RX-анализатор (SetAnalyzer = сброс FFT-истории) даже когда zoom/pan не менялись — дисплей замирал на время наполнения окна. Теперь no-op guard: без изменений выходим без переарма. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
+11
-2
@@ -1439,9 +1439,18 @@ end;
|
||||
procedure TWDSPEngine.SetZoomPan(AZoom, APan: Double);
|
||||
// Задаёт зум/пан и переармирует RX-анализатор (SetAnalyzer внутри WDSP
|
||||
// защищён собственной критической секцией, дисплей-поток не мешает).
|
||||
var
|
||||
NZ, NP: Double;
|
||||
begin
|
||||
FZoomFactor := EnsureRange(AZoom, 0.0, 1.0);
|
||||
FPanSlider := EnsureRange(APan, 0.0, 1.0);
|
||||
NZ := EnsureRange(AZoom, 0.0, 1.0);
|
||||
NP := EnsureRange(APan, 0.0, 1.0);
|
||||
// Без изменений — выходим БЕЗ переарма: SetAnalyzer сбрасывает FFT-историю,
|
||||
// и спектр/водопад замирают на время наполнения окна (~0.7с @ 192к/131072).
|
||||
// RestoreBand зовёт SetZoomPan безусловно — это било по КАЖДОЙ смене
|
||||
// диапазона, даже когда зум обоих бандов одинаковый (обычно 0).
|
||||
if (Abs(NZ - FZoomFactor) < 1E-9) and (Abs(NP - FPanSlider) < 1E-9) then Exit;
|
||||
FZoomFactor := NZ;
|
||||
FPanSlider := NP;
|
||||
if FAnalyzerOpen then
|
||||
ApplyRXAnalyzerSettings;
|
||||
end;
|
||||
|
||||
Reference in New Issue
Block a user