gst-plugins-rs/gst-plugin-threadshare/src
Mathieu Duponchelle 53e948b8da proxy: fix blocking upwards state change
ProxySink previously blocked on receiving the source pad
of ProxySrc in its ReadyToPaused transition, which meant
ProxySrc had to transition to Ready at the same time.

The usual use case is for the source and sink to reside in
two separate pipelines, and such an arrangement easily led
to deadlocks, as examplified by the new test case.

Instead we now maintain two more global hash maps holding
per-context sink pads and src pads weak references, and
forward events to those when needed.

As ProxySink may not have a source pad context to run
a future on when receiving FlushStart, gst::Element::call_async
is used instead, with a simple oneshot channel used to synchronize
flush start and flush stop handling.
2020-02-05 21:35:11 +01:00
..
jitterbuffer ts-jitterbuffer: add dedicated functions for state transitions + tests 2020-01-23 19:10:21 +01:00
runtime ts: don't panic when operating on a Context without a valid PadContext 2020-01-22 06:16:17 +00:00
appsrc.rs Update for Seqnum/GroupId API changes 2020-01-25 01:21:22 +02:00
dataqueue.rs ts: Pad wrapper for async processing 2019-12-21 08:56:43 +01:00
lib.rs Move jitterbuffer to its own directory module 2019-12-21 10:45:43 +01:00
proxy.rs proxy: fix blocking upwards state change 2020-02-05 21:35:11 +01:00
queue.rs ts: queue & proxy: spawn on src_pad in PadSinkHandlers... 2020-01-17 15:37:54 +01:00
socket.rs ts: Pad wrapper for async processing 2019-12-21 08:56:43 +01:00
tcpclientsrc.rs socket based sources: close socket stream on unprepare 2020-02-04 20:09:27 +01:00
udpsrc.rs socket based sources: close socket stream on unprepare 2020-02-04 20:09:27 +01:00