Files
pmomusic/pmoaudio-ext
Claude dba9f668f6 Fix critical deadlock in FlacCacheSink parallel write architecture
Problem: The dispatcher was placed AFTER the prebuffer await, causing a deadlock:
- Pump waits for data on track_rx
- Cache waits for pump to produce PCM data
- Code awaits cache completion before reaching dispatcher
- Dispatcher never runs → pump never receives data → deadlock

Solution: Use tokio::select! to dispatch segments in parallel with prebuffer wait

Architecture now has 3 phases:
1. Phase 1: Dispatch chunks + await prebuffer (in parallel via select!)
2. Phase 2: Copy metadata + push to playlist (after prebuffer complete)
3. Phase 3: Continue dispatching until TrackBoundary

This fixes the "sans musique" blocking issue where the system would freeze
waiting for prebuffer that could never complete.
2025-11-07 14:36:19 +00:00
..