gst-plugins-rs/utils
François Laignel a1c89dd17b utils/togglerecord: fix race condition checking other streams EOS state
Function `check_and_update_stream_start` checks whether other streams
reached EOS. The stream being checked might already have locked its
state. If it's about to check other streams too, this results in a
deadlock.

The problem was due to the `main_state` guard being dropped handling
event `StreamStart` checking whether the main stream is EOS:

```rust
    let main_is_eos = if let Some(main_state) = main_state {
        main_state.eos
    } else {
        false
    };
```

In the above code, `main_state` main state is comsumed and dropped
after evaluating `main_state.eos`.

This is also the case before handling event `Eos`.

This revealed another deadlock handling event `Eos` which is under
investigation.
2021-12-20 09:01:09 +00:00
..
fallbackswitch fallbacksrc: Actually calculate running times of segment start/stop if the PTS is outside the segment 2021-12-09 12:30:42 +02:00
togglerecord utils/togglerecord: fix race condition checking other streams EOS state 2021-12-20 09:01:09 +00:00
uriplaylistbin Fix a couple of new clippy warnings 2021-12-02 22:31:52 +02:00