Fix destruction order of subpictures. They should be destroyed first.
authorgb <gb@5584edef-b1fe-4b99-b61b-dd2bab72e969>
Wed, 24 Mar 2010 14:57:33 +0000 (14:57 +0000)
committergb <gb@5584edef-b1fe-4b99-b61b-dd2bab72e969>
Wed, 24 Mar 2010 14:57:33 +0000 (14:57 +0000)
gst-libs/gst/vaapi/gstvaapisurface.c

index bd35504..364a51c 100644 (file)
@@ -71,6 +71,12 @@ gst_vaapi_surface_destroy(GstVaapiSurface *surface)
     surface_id = GST_VAAPI_OBJECT_ID(surface);
     GST_DEBUG("surface %" GST_VAAPI_ID_FORMAT, GST_VAAPI_ID_ARGS(surface_id));
 
+    if (priv->subpictures) {
+        g_ptr_array_foreach(priv->subpictures, destroy_subpicture_cb, NULL);
+        g_ptr_array_free(priv->subpictures, TRUE);
+        priv->subpictures = NULL;
+    }
+
     if (surface_id != VA_INVALID_SURFACE) {
         GST_VAAPI_DISPLAY_LOCK(display);
         status = vaDestroySurfaces(
@@ -83,12 +89,6 @@ gst_vaapi_surface_destroy(GstVaapiSurface *surface)
                       GST_VAAPI_ID_ARGS(surface_id));
         GST_VAAPI_OBJECT_ID(surface) = VA_INVALID_SURFACE;
     }
-
-    if (priv->subpictures) {
-        g_ptr_array_foreach(priv->subpictures, destroy_subpicture_cb, NULL);
-        g_ptr_array_free(priv->subpictures, TRUE);
-        priv->subpictures = NULL;
-    }
 }
 
 static gboolean