Make sure we don't hold a ref to a buffer from before the DRAIN query by
making a copy of the last_buffer.
break;
}
case GST_QUERY_DRAIN:
+ {
+ GstBuffer *old;
+
+ GST_OBJECT_LOCK (basesink);
+ if ((old = basesink->priv->last_buffer))
+ basesink->priv->last_buffer = gst_buffer_copy (old);
+ GST_OBJECT_UNLOCK (basesink);
+ if (old)
+ gst_buffer_unref (old);
res = TRUE;
break;
+ }
default:
res =
gst_pad_query_default (basesink->sinkpad, GST_OBJECT_CAST (basesink),