diff --git a/.sisyphus/BUGS.md b/.sisyphus/BUGS.md index 3cd6c4d..e688b68 100644 --- a/.sisyphus/BUGS.md +++ b/.sisyphus/BUGS.md @@ -25,11 +25,12 @@ ## 🟠 High (4) -### #2: PipeWire process callback can block indefinitely +### ~~#2: PipeWire process callback can block indefinitely~~ ✅ Fixed - **Location**: `src/cap_portal.rs:320` - **Description**: `frame_tx.send(PwEvent::Frame(frame))` is called from the PipeWire `.process` callback on a bounded channel of size 3. If encoding stalls, this blocks the PipeWire callback and delays `stream.queue_raw_buffer(raw_buf)`. - **Fix**: Use `try_send` and drop frames on full, or use an unbounded channel with a backpressure counter. +- **Fixed in**: [`a09a423`](commit:a09a423) — Replaced `send()` with `try_send()` + `AtomicU64` drop counter. PipeWire `.process` callback is now guaranteed non-blocking. Dropped frames are counted and logged every 30 occurrences. ### #3: Portal PTS uses raw PipeWire timestamp as encoder frame-number timebase