From 4f779edb889d4ef83c2609d07b95eb57dd4d7e69 Mon Sep 17 00:00:00 2001 From: "5684185+vsariola@users.noreply.github.com" <5684185+vsariola@users.noreply.github.com> Date: Tue, 27 May 2025 17:18:29 +0300 Subject: [PATCH] perf(tracker/gioui): avoid heap escapes in the menubar --- tracker/gioui/songpanel.go | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/tracker/gioui/songpanel.go b/tracker/gioui/songpanel.go index dd8ef30..3059390 100644 --- a/tracker/gioui/songpanel.go +++ b/tracker/gioui/songpanel.go @@ -337,20 +337,15 @@ func (t *MenuBar) Layout(gtx C, tr *Tracker) D { if t.PanicBtn.Bool.Value() { panicBtnStyle.IconButtonStyle.Color = tr.Theme.SongPanel.ErrorColor } - menuLayouts := []layout.FlexChild{ - layout.Rigid(tr.layoutMenu(gtx, "File", &t.Clickables[0], &t.Menus[0], unit.Dp(200), t.fileMenuItems...)), - layout.Rigid(tr.layoutMenu(gtx, "Edit", &t.Clickables[1], &t.Menus[1], unit.Dp(200), t.editMenuItems...)), - } + flex := layout.Flex{Axis: layout.Horizontal, Alignment: layout.End} + fileFC := layout.Rigid(tr.layoutMenu(gtx, "File", &t.Clickables[0], &t.Menus[0], unit.Dp(200), t.fileMenuItems...)) + editFC := layout.Rigid(tr.layoutMenu(gtx, "Edit", &t.Clickables[1], &t.Menus[1], unit.Dp(200), t.editMenuItems...)) + midiFC := layout.Rigid(tr.layoutMenu(gtx, "MIDI", &t.Clickables[2], &t.Menus[2], unit.Dp(200), t.midiMenuItems...)) + panicFC := layout.Flexed(1, func(gtx C) D { return layout.E.Layout(gtx, panicBtnStyle.Layout) }) if len(t.midiMenuItems) > 0 { - menuLayouts = append( - menuLayouts, - layout.Rigid(tr.layoutMenu(gtx, "MIDI", &t.Clickables[2], &t.Menus[2], unit.Dp(200), t.midiMenuItems...)), - ) + return flex.Layout(gtx, fileFC, editFC, midiFC, panicFC) } - menuLayouts = append(menuLayouts, layout.Flexed(1, func(gtx C) D { - return layout.E.Layout(gtx, panicBtnStyle.Layout) - })) - return layout.Flex{Axis: layout.Horizontal, Alignment: layout.End}.Layout(gtx, menuLayouts...) + return flex.Layout(gtx, fileFC, editFC, panicFC) } type PlayBar struct {