Fix #804: update to fyne develop for rectangle paint bug fix, optimize peak meter refresh

This commit is contained in:
Drew Weymouth
2026-01-21 08:49:27 -08:00
parent 70cd241662
commit cccc8a7de8
3 changed files with 25 additions and 6 deletions
+16
View File
@@ -32,6 +32,10 @@ type PeakMeter struct {
lPeakHoldFrame uint64
rPeakHoldFrame uint64
frameCounter uint64
// true iff only a layout is needed, rathern than a full refresh.
// cleared by the renderer
refreshLayoutOnly bool
}
func NewPeakMeter() *PeakMeter {
@@ -68,6 +72,7 @@ func (p *PeakMeter) UpdatePeaks(lPeak, rPeak, lRMS, rRMS float64) {
}
p.frameCounter++
p.refreshLayoutOnly = true
p.Refresh()
}
@@ -75,6 +80,11 @@ func (p *PeakMeter) CreateRenderer() fyne.WidgetRenderer {
return newPeakMeterRenderer(p)
}
func (p *PeakMeter) Refresh() {
p.refreshLayoutOnly = false
p.BaseWidget.Refresh()
}
type peakMeterRenderer struct {
p *PeakMeter
@@ -168,6 +178,12 @@ func (l *peakMeterRenderer) Layout(size fyne.Size) {
}
func (l *peakMeterRenderer) Refresh() {
if l.p.refreshLayoutOnly {
l.p.refreshLayoutOnly = false
l.Layout(l.p.Size())
return
}
foreground := theme.ForegroundColor()
background := theme.BackgroundColor()
errC := theme.ErrorColor()