videodecoder: Also change gst_video_decoder_get_oldest_frame() to return a new reference
authorSebastian Dröge <sebastian.droege@collabora.co.uk>
Tue, 1 May 2012 14:55:13 +0000 (16:55 +0200)
committerSebastian Dröge <sebastian.droege@collabora.co.uk>
Tue, 1 May 2012 14:59:10 +0000 (16:59 +0200)
gst-libs/gst/video/gstvideodecoder.c

index c95fb7d..0778ca7 100644 (file)
@@ -2310,22 +2310,21 @@ gst_video_decoder_set_output_state (GstVideoDecoder * decoder,
  *
  * Get the oldest pending unfinished #GstVideoCodecFrame
  *
- * Returns: (transfer none): oldest pending unfinished #GstVideoCodecFrame.
+ * Returns: (transfer full): oldest pending unfinished #GstVideoCodecFrame.
  *
  * Since: 0.10.36
  */
 GstVideoCodecFrame *
 gst_video_decoder_get_oldest_frame (GstVideoDecoder * decoder)
 {
-  GList *g;
+  GstVideoCodecFrame *frame = NULL;
 
   GST_VIDEO_DECODER_STREAM_LOCK (decoder);
-  g = decoder->priv->frames;
+  if (decoder->priv->frames)
+    frame = gst_video_codec_frame_ref (decoder->priv->frames->data);
   GST_VIDEO_DECODER_STREAM_UNLOCK (decoder);
 
-  if (g == NULL)
-    return NULL;
-  return (GstVideoCodecFrame *) (g->data);
+  return (GstVideoCodecFrame *) frame;
 }
 
 /**