Untested Fix: Memory Leak in Music Player

This commit is contained in:
Hariharan Mudaliar 2025-12-14 13:40:35 +05:30
commit efb2eaad6a
No known key found for this signature in database
GPG key ID: D04F1C2B9194DDFC

View file

@ -19,6 +19,10 @@ class AudioSpectrum: NSView {
setupBars()
}
deinit {
animationTimer?.invalidate()
}
required init?(coder: NSCoder) {
super.init(coder: coder)
wantsLayer = true
@ -50,6 +54,15 @@ class AudioSpectrum: NSView {
}
}
override func viewDidMoveToWindow() {
super.viewDidMoveToWindow()
if window == nil {
stopAnimating()
} else if isPlaying {
startAnimating()
}
}
private func startAnimating() {
guard animationTimer == nil else { return }
animationTimer = Timer.scheduledTimer(withTimeInterval: 0.3, repeats: true) { [weak self] _ in
@ -108,6 +121,10 @@ struct AudioSpectrumView: NSViewRepresentable {
func updateNSView(_ nsView: AudioSpectrum, context: Context) {
nsView.setPlaying(isPlaying)
}
static func dismantleNSView(_ nsView: AudioSpectrum, coordinator: ()) {
nsView.setPlaying(false)
}
}
#Preview {