diff --git a/MainForm.pas b/MainForm.pas index 4bfd5dd..9d86d7a 100644 --- a/MainForm.pas +++ b/MainForm.pas @@ -301,6 +301,7 @@ type // Waterfall frame timing FWaterfallFrameInterval: Integer; FWaterfallFrameCounter: Integer; + FAgcLineCounter: Integer; // ---- Splitter ---- FSplitterDrag: Boolean; FSplitterDragY0: Integer; @@ -2874,7 +2875,6 @@ begin ((PbWaterfall.Width <> FSpectrumWidth) or (PbWaterfall.Height <> FWaterfallHeight))) then ResizeSpectrumPanels; - ResizeSMeter; if FSpectrumWidth <= 0 then Exit; SyncSpecViewFreq; @@ -2920,9 +2920,14 @@ begin begin FLastSMeter := FDSPEngine.GetSMeterDBm; FDSPEngine.SetSpectrumWidth(FSpectrumWidth); - FDSPEngine.UpdateAGCLines(FSpectrumWidth); - FSpecView.AGCThresh := FDSPEngine.AGCThresh; - FSpecView.AGCHangLevel := FDSPEngine.AGCHangLevel; + Inc(FAgcLineCounter); + if FAgcLineCounter >= 6 then + begin + FDSPEngine.UpdateAGCLines(FSpectrumWidth); + FSpecView.AGCThresh := FDSPEngine.AGCThresh; + FSpecView.AGCHangLevel := FDSPEngine.AGCHangLevel; + FAgcLineCounter := 0; + end; end; FSpecView.WDSPReady := FWDSPReady; // Обновляем оверлей если видим diff --git a/SpectrumView.pas b/SpectrumView.pas index 5667a20..febc724 100644 --- a/SpectrumView.pas +++ b/SpectrumView.pas @@ -696,7 +696,7 @@ procedure TSpectrumView.DrawSpectrum; var C, GC: TCanvas; i, Yp, W, H, GX: Integer; - AlphaRow: PCardinal; + AlphaPtr: PByte; DBmin, DBmax, dB: Double; VfoX, X1, X2: Integer; TXVfoX, TXX1, TXX2: Integer; @@ -907,9 +907,12 @@ begin FSpectrumBitmap.BeginUpdate(False); for i := 0 to H - 1 do begin - AlphaRow := PCardinal(FSpectrumBitmap.ScanLine[i]); + AlphaPtr := PByte(FSpectrumBitmap.ScanLine[i]) + 3; for Yp := 0 to W - 1 do - AlphaRow[Yp] := AlphaRow[Yp] or $FF000000; + begin + AlphaPtr^ := $FF; + Inc(AlphaPtr, 4); + end; end; FSpectrumBitmap.EndUpdate(False); end;