GNOME Bugzilla – Bug 369942
[PATCH] unblocking blocked pad does not release all blocked threads
Last modified: 2006-11-30 22:16:31 UTC
GST_PAD_BLOCK_SIGNAL only wakes up a single thread waiting on a blocked pad.
However, it is possible to have more than 1 thread blocked, e.g. in the situation
elementX ! queue:
- elementX sends event, is queued, queue_loop tries to send out and blocks src
- elementX (after sending event) performs pad_alloc, this thread crosses the "queue thread boundary" and is also blocked on queue.src
Created attachment 75924 [details] [review]
Simple patch; use _broadcast in stead of _signal.
Wake up all waiting threads when unblocking blocked pad.
Patch by: Mark Nauwelaerts <manauw at skynet dot be>
* gst/gstpad.c: (gst_pad_init), (pre_activate),
(gst_pad_accept_caps), (handle_pad_block), (gst_pad_push_event):
Some small cleanups. Improve debugging.
Signal all waiting threads with a broadcast instead of just one.