diff --git a/backend/player/mpv/player.go b/backend/player/mpv/player.go index a0b2c7e..5dfd52b 100644 --- a/backend/player/mpv/player.go +++ b/backend/player/mpv/player.go @@ -498,7 +498,7 @@ func (p *Player) setState(s player.State) { func (p *Player) setAF() error { af := "" if p.peaksEnabled { - af = "@astats:astats=metadata=1:reset=1" + af = "@astats:astats=metadata=1:reset=1:measure_overall=none" } eq := p.equalizer if eq == nil || !eq.IsEnabled() { diff --git a/ui/browsing/browsingpane.go b/ui/browsing/browsingpane.go index d2868d3..9c135be 100644 --- a/ui/browsing/browsingpane.go +++ b/ui/browsing/browsingpane.go @@ -135,6 +135,12 @@ func (b *BrowsingPane) AddSettingsMenuItem(label string, action func()) { fyne.NewMenuItem(label, action)) } +func (b *BrowsingPane) AddSettingsSubmenu(label string, menu *fyne.Menu) { + item := fyne.NewMenuItem(label, nil) + item.ChildMenu = menu + b.settingsMenu.Items = append(b.settingsMenu.Items, item) +} + func (b *BrowsingPane) AddSettingsMenuSeparator() { b.settingsMenu.Items = append(b.settingsMenu.Items, fyne.NewMenuItemSeparator()) diff --git a/ui/mainwindow.go b/ui/mainwindow.go index 6c48f6d..c81ee8d 100644 --- a/ui/mainwindow.go +++ b/ui/mainwindow.go @@ -138,7 +138,10 @@ func NewMainWindow(fyneApp fyne.App, appName, displayAppName, appVersion string, m.BrowsingPane.AddSettingsMenuItem("Switch Servers", func() { app.ServerManager.Logout(false) }) m.BrowsingPane.AddSettingsMenuItem("Rescan Library", func() { app.ServerManager.Server.RescanLibrary() }) m.BrowsingPane.AddSettingsMenuSeparator() - m.BrowsingPane.AddSettingsMenuItem(lang.L("Show Peak Meter"), m.Controller.ShowPeakMeter) + m.BrowsingPane.AddSettingsSubmenu(lang.L("Visualizations"), + fyne.NewMenu("", []*fyne.MenuItem{ + fyne.NewMenuItem(lang.L("Peak Meter"), m.Controller.ShowPeakMeter), + }...)) m.BrowsingPane.AddSettingsMenuItem("Check for Updates", func() { go func() { if t := app.UpdateChecker.CheckLatestVersionTag(); t != "" && t != app.VersionTag() { diff --git a/ui/visualizations/peakmeter.go b/ui/visualizations/peakmeter.go index 57ecf2f..6528f12 100644 --- a/ui/visualizations/peakmeter.go +++ b/ui/visualizations/peakmeter.go @@ -90,6 +90,8 @@ type peakMeterRenderer struct { rulerLines []canvas.Rectangle rulerLabels []canvas.Text + objects []fyne.CanvasObject + fgColor color.Color bgColor color.Color ruleColor color.Color @@ -207,15 +209,18 @@ func (l *peakMeterRenderer) Refresh() { } func (l *peakMeterRenderer) Objects() []fyne.CanvasObject { - obj := make([]fyne.CanvasObject, 0, 6+len(l.rulerLines)) - for i := range l.rulerLines { - obj = append(obj, &l.rulerLines[i], &l.rulerLabels[i]) + if l.objects == nil { + l.objects = make([]fyne.CanvasObject, 0, 6+len(l.rulerLines)) + for i := range l.rulerLines { + l.objects = append(l.objects, &l.rulerLines[i], &l.rulerLabels[i]) + } + l.objects = append(l.objects, + &l.lLabel, &l.rLabel, + &l.lPeakRect, &l.rPeakRect, + &l.lRMSRect, &l.rRMSRect, + &l.lPeakHoldRect, &l.rPeakHoldRect) } - return append(obj, - &l.lLabel, &l.rLabel, - &l.lPeakRect, &l.rPeakRect, - &l.lRMSRect, &l.rRMSRect, - &l.lPeakHoldRect, &l.rPeakHoldRect) + return l.objects } func (l *peakMeterRenderer) Destroy() {