Check GstVaapiWindow::render() is available prior to calling it.
authorgb <gb@5584edef-b1fe-4b99-b61b-dd2bab72e969>
Fri, 26 Mar 2010 08:35:24 +0000 (08:35 +0000)
committergb <gb@5584edef-b1fe-4b99-b61b-dd2bab72e969>
Fri, 26 Mar 2010 08:35:24 +0000 (08:35 +0000)
gst-libs/gst/vaapi/gstvaapiwindow.c

index 495d86f..5f521d4 100644 (file)
@@ -482,12 +482,17 @@ gst_vaapi_window_put_surface(
     guint                    flags
 )
 {
+    GstVaapiWindowClass *klass;
     GstVaapiRectangle src_rect_default, dst_rect_default;
 
     g_return_val_if_fail(GST_VAAPI_IS_WINDOW(window), FALSE);
     g_return_val_if_fail(window->priv->is_constructed, FALSE);
     g_return_val_if_fail(GST_VAAPI_IS_SURFACE(surface), FALSE);
 
+    klass = GST_VAAPI_WINDOW_GET_CLASS(window);
+    if (!klass->render)
+        return FALSE;
+
     if (!src_rect) {
         src_rect = &src_rect_default;
         get_surface_rect(surface, &src_rect_default);
@@ -498,9 +503,5 @@ gst_vaapi_window_put_surface(
         get_window_rect(window, &dst_rect_default);
     }
 
-    return GST_VAAPI_WINDOW_GET_CLASS(window)->render(window,
-                                                      surface,
-                                                      src_rect,
-                                                      dst_rect,
-                                                      flags);
+    return klass->render(window, surface, src_rect, dst_rect, flags);
 }