If the second call to _wait blocks, we will not signal the condition
variable, so ensure that second call is not blocking.
See rationale and information in the linked bug:
https://bugzilla.gnome.org/show_bug.cgi?id=669697
{
GstShmSink *self = GST_SHM_SINK (data);
GList *item;
+ GstClockTime timeout = GST_CLOCK_TIME_NONE;
while (!self->stop) {
- if (gst_poll_wait (self->poll, GST_CLOCK_TIME_NONE) < 0)
+ if (gst_poll_wait (self->poll, timeout) < 0)
return NULL;
+ timeout = GST_CLOCK_TIME_NONE;
+
if (self->stop)
return NULL;
functions on that new descriptor, so restart the loop, so _wait
will have been called on all elements of self->poll, whether
they have just been added or not. */
+ timeout = 0;
continue;
}