]> Gitweb @ Texas Instruments - Open Source Git Repositories - git.TI.com/gitweb - glsdk/gstreamer0-10.git/commitdiff
collectpads2: avoid hanging in case of sparse newsegment events
authorMark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
Tue, 27 Sep 2011 13:48:52 +0000 (15:48 +0200)
committerSebastian Dröge <sebastian.droege@collabora.co.uk>
Fri, 28 Oct 2011 07:39:00 +0000 (09:39 +0200)
... 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.

libs/gst/base/gstcollectpads2.c

index 18f6791bba49af5d315efcecbd73c60fe9f1bb3d..60e4663a6d6c7f8ebc4466aaa95189d1bffe0df1 100644 (file)
@@ -1544,6 +1544,11 @@ gst_collect_pads2_default_collected (GstCollectPads2 * pads, gpointer user_data)
   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;
 }