Skip to content

MixPill 3.2.3

Latest

Choose a tag to compare

@kuntayerkus kuntayerkus released this 15 Aug 18:59

A performance release, and one bug that 3.2.2 introduced.

The mixer kept animating after you closed it. 3.2.2 stopped the level meters when the popover is dismissed, but the mute glyph's animation was driven by the last level reading — which freezes at whatever it was. Close the popover while something is playing and every row that had been playing kept a repeating animation running at a screen nobody was looking at. It now follows whether the app is playing, and stops with the popover.

Opening the mixer costs about a third less. Level readings arrive thirty times a second and used to live on the model that the whole popover is drawn from, so a six-point meter moving rebuilt every row, thirty times a second. Each channel's meter now has its own path to its own reading. Measured on the same machine with music playing: 32.5% of a CPU core down to 21.1%, and the view-rebuilding part of that from 1119 samples out of 4547 to 2.

Dragging a fader is 3 to 9 times cheaper. Three things were happening on every event of a drag, sixty times a second: the whole popover was being rebuilt to keep a preset checkmark honest, a Launch Services lookup ran to build an undo label that was then discarded, and the output menu regrouped its device list for a menu nobody had opened. None of them do now.

Nothing in the audio path changed. Its real-time guarantees were re-checked against the shipped binary rather than the source — no allocation, no locking, no reference counting on the render or capture threads — and they hold.

Full Changelog: v3.2.2...v3.2.3