mirror of
https://git.vladimir.cc/vladimir/ewsdr.git
synced 2026-08-25 20:37:33 +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);
|
procedure TWDSPEngine.SetZoomPan(AZoom, APan: Double);
|
||||||
// Задаёт зум/пан и переармирует RX-анализатор (SetAnalyzer внутри WDSP
|
// Задаёт зум/пан и переармирует RX-анализатор (SetAnalyzer внутри WDSP
|
||||||
// защищён собственной критической секцией, дисплей-поток не мешает).
|
// защищён собственной критической секцией, дисплей-поток не мешает).
|
||||||
|
var
|
||||||
|
NZ, NP: Double;
|
||||||
begin
|
begin
|
||||||
FZoomFactor := EnsureRange(AZoom, 0.0, 1.0);
|
NZ := EnsureRange(AZoom, 0.0, 1.0);
|
||||||
FPanSlider := EnsureRange(APan, 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
|
if FAnalyzerOpen then
|
||||||
ApplyRXAnalyzerSettings;
|
ApplyRXAnalyzerSettings;
|
||||||
end;
|
end;
|
||||||
|
|||||||
Reference in New Issue
Block a user