outputselector: Avoid losing the last_buffer when switching
authorThiago Santos <thiago.sousa.santos@collabora.co.uk>
Fri, 17 Sep 2010 12:52:12 +0000 (09:52 -0300)
committerThiago Santos <thiago.sousa.santos@collabora.co.uk>
Mon, 22 Nov 2010 20:34:02 +0000 (17:34 -0300)
This patch makes outputselector take an extra ref when pushing
the last_buffer to avoid it losing it during the switch function.

This makes resend-latest properly work if the active-pad is changed
during the switch function buffer pushing (on a pad probe, for example).

https://bugzilla.gnome.org/show_bug.cgi?id=629917

gst/selector/gstoutputselector.c

index 088bed0..9b75da2 100644 (file)
@@ -375,8 +375,7 @@ gst_output_selector_switch (GstOutputSelector * osel)
     /* Resend latest buffer to newly switched pad */
     if (osel->resend_latest && osel->latest_buffer) {
       GST_INFO ("resending latest buffer");
-      gst_pad_push (osel->active_srcpad, osel->latest_buffer);
-      osel->latest_buffer = NULL;
+      gst_pad_push (osel->active_srcpad, gst_buffer_ref (osel->latest_buffer));
     }
   } else {
     GST_WARNING_OBJECT (osel, "switch failed, pad not linked");