Fix AGC lines not updating on spectrum

Three params were never synced to FSpecView after FormCreate:
- WDSPReady: now set every timer tick so the draw branch (real
  WDSP thresh/hang vs. static AGCTop) is always correct
- AGCThresh/AGCHangLevel: synced from FDSPEngine after
  UpdateAGCLines in SpectrumTimerTick
- AGCTop: synced in TrkAGCChange, RestoreBand and DoConnectDevice

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-27 21:33:29 +03:00
co-authored by Claude Sonnet 4.6
parent a149b18435
commit ee9947acde
+7 -3
View File
@@ -884,6 +884,7 @@ begin
FDSPEngine.SetAGCTop(FAGCTop);
FDSPEngine.SetAGC(TWDSPAGCMode(FAGCMode), 50.0);
end;
FSpecView.AGCTop := FAGCTop;
// --- CTUN ---
FCTun := B.CTun;
@@ -2140,9 +2141,12 @@ begin
if FWDSPReady then
begin
FLastSMeter := FDSPEngine.GetSMeterDBm;
FDSPEngine.SetSpectrumWidth(FSpectrumWidth); // актуальная ширина для SetAGC/SetAGCTop
FDSPEngine.SetSpectrumWidth(FSpectrumWidth);
FDSPEngine.UpdateAGCLines(FSpectrumWidth);
FSpecView.AGCThresh := FDSPEngine.AGCThresh;
FSpecView.AGCHangLevel := FDSPEngine.AGCHangLevel;
end;
FSpecView.WDSPReady := FWDSPReady;
// Обновляем оверлей если видим
if Assigned(FVfoOverlay) and FVfoOverlay.Visible then
begin
@@ -2815,8 +2819,8 @@ begin
// ChangeSampleRate пересоздаёт WDSP-канал — восстанавливаем все настройки
FDSPEngine.SetAGCTop(FAGCTop);
FDSPEngine.SetAGC(TWDSPAGCMode(FAGCMode), 50.0);
// SetAGC вызывает UpdateAGCLines внутри — линии на спектре обновятся
end;
FSpecView.AGCTop := FAGCTop;
// DUC specific
FillChar(DUCPkt, SizeOf(DUCPkt), 0);
@@ -4415,8 +4419,8 @@ begin
FDSPEngine.SetAGCTop(FAGCTop);
FDSPEngine.SetAGC(TWDSPAGCMode(FAGCMode), 50.0);
end;
// Обновляем кэш диапазона
FBandCache[FCurrentBand].AGCTop := FAGCTop;
FSpecView.AGCTop := FAGCTop;
FSpecView.DrawSpectrum;
PbSpectrum.Invalidate;
end;