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)
committerTim-Philipp Müller <tim.muller@collabora.co.uk>
Fri, 31 Dec 2010 00:54:05 +0000 (00:54 +0000)
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

plugins/elements/gstoutputselector.c

index 088bed0d23597ab5fef77a168b16e33c281419c1..9b75da2c245053b5b37b66f883470402549eeaee 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");