Fix gst_vaapi_decoder_get_surface() status.
authorgb <gb@5584edef-b1fe-4b99-b61b-dd2bab72e969>
Thu, 29 Apr 2010 14:58:45 +0000 (14:58 +0000)
committerGwenole Beauchesne <gbeauchesne@splitted-desktop.com>
Mon, 20 Sep 2010 10:55:41 +0000 (12:55 +0200)
gst-libs/gst/vaapi/gstvaapidecoder.c

index 6ad1c9d..97657fc 100644 (file)
@@ -221,7 +221,6 @@ static gboolean
 push_surface(GstVaapiDecoder *decoder, GstVaapiSurface *surface)
 {
     GstVaapiDecoderPrivate * const priv = decoder->priv;
-    GstVaapiDecoderStatus status = priv->decoder_status;
     DecodedSurface *ds;
 
     ds = create_surface();
@@ -232,13 +231,16 @@ push_surface(GstVaapiDecoder *decoder, GstVaapiSurface *surface)
         GST_DEBUG("queue decoded surface %" GST_VAAPI_ID_FORMAT,
                   GST_VAAPI_ID_ARGS(GST_VAAPI_OBJECT_ID(surface)));
         ds->proxy = gst_vaapi_surface_proxy_new(priv->context, surface);
-        if (ds->proxy)
+        if (ds->proxy) {
+            ds->status = GST_VAAPI_DECODER_STATUS_SUCCESS;
             gst_vaapi_surface_proxy_set_timestamp(
                 ds->proxy, priv->surface_timestamp);
+        }
         else
-            status = GST_VAAPI_DECODER_STATUS_ERROR_ALLOCATION_FAILED;
+            ds->status = GST_VAAPI_DECODER_STATUS_ERROR_ALLOCATION_FAILED;
     }
-    ds->status = status;
+    else
+        ds->status = priv->decoder_status;
 
     g_async_queue_push(priv->surfaces, ds);
     return TRUE;