Improve gst_vaapi_image_new() sanity checks.
authorgb <gb@5584edef-b1fe-4b99-b61b-dd2bab72e969>
Thu, 18 Mar 2010 12:56:53 +0000 (12:56 +0000)
committergb <gb@5584edef-b1fe-4b99-b61b-dd2bab72e969>
Thu, 18 Mar 2010 12:56:53 +0000 (12:56 +0000)
gst-libs/gst/vaapi/gstvaapiimage.c

index 4b0fd47..039f55f 100644 (file)
@@ -373,6 +373,8 @@ gst_vaapi_image_new(
     guint               height
 )
 {
+    GstVaapiImage *image;
+
     g_return_val_if_fail(GST_VAAPI_IS_DISPLAY(display), NULL);
     g_return_val_if_fail(width > 0, NULL);
     g_return_val_if_fail(height > 0, NULL);
@@ -380,12 +382,22 @@ gst_vaapi_image_new(
     GST_DEBUG("format %" GST_FOURCC_FORMAT ", size %ux%u",
               GST_FOURCC_ARGS(format), width, height);
 
-    return g_object_new(GST_VAAPI_TYPE_IMAGE,
-                        "display", display,
-                        "format",  format,
-                        "width",   width,
-                        "height",  height,
-                        NULL);
+    image = g_object_new(
+        GST_VAAPI_TYPE_IMAGE,
+        "display", display,
+        "format",  format,
+        "width",   width,
+        "height",  height,
+        NULL
+    );
+    if (!image)
+        return NULL;
+
+    if (!image->priv->is_constructed) {
+        g_object_unref(image);
+        return NULL;
+    }
+    return image;
 }
 
 VAImageID