Critical Fix: - Goroutine dump showed hundreds of leaked animation goroutines - Each queue refresh created NEW progress bars without stopping old ones - Animation goroutines continued running forever, consuming resources Root Cause: - BuildQueueView() creates new StripedProgress widgets on every refresh - StartAnimation() spawned goroutines for running jobs - Old widgets were discarded but goroutines never stopped - Fyne's Destroy() method not reliably called when rebuilding view Solution: - Track all active StripedProgress widgets in appState.queueActiveProgress - Stop ALL animations before rebuilding queue view - Stop ALL animations when leaving queue view (stopQueueAutoRefresh) - BuildQueueView now returns list of active progress bars - Prevents hundreds of leaked goroutines from accumulating Implementation: - Added queueActiveProgress []*ui.StripedProgress to appState - Modified BuildQueueView signature to return progress list - Stop old animations in refreshQueueView() before calling BuildQueueView - Stop all animations in stopQueueAutoRefresh() when navigating away - Track running job progress bars and append to activeProgress slice Files Changed: - main.go: appState field, refreshQueueView(), stopQueueAutoRefresh() - internal/ui/queueview.go: BuildQueueView(), buildJobItem() Impact: - Eliminates goroutine leak that caused resource exhaustion - Clean shutdown of animation goroutines on refresh and navigation - Should dramatically reduce memory usage and CPU overhead Reported-by: User (goroutine dump showing 900+ leaked goroutines) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| app | ||
| benchmark | ||
| convert | ||
| interlace | ||
| logging | ||
| metadata | ||
| modules | ||
| player | ||
| queue | ||
| sysinfo | ||
| thumbnail | ||
| ui | ||
| utils | ||