... in the extent that a non-waiting pad (so indicated by newsegment)
turns out to provide the best buffer, which is then forced to waiting
for book-keeping purposes, but that should only be temporary.
See bug #415754.
buffer = gst_collect_pads2_pop (pads, best);
ret = func (pads, best, buffer, buffer_user_data);
+ /* maybe non-waiting was forced to waiting above due to
+ * newsegment events coming too sparsely,
+ * so re-check to restore state to avoid hanging/waiting */
+ gst_collect_pads2_recalculate_full (pads);
+
done:
return ret;
}