libs: fix GstVaapiSurfaceProxy destroy notify call site.

The user-defined destroy notify function is meant to be called only when
the surface proxy was fully released, i.e. once it actually released the
VA surface back to the underlying pool.
This commit is contained in:
Gwenole Beauchesne 2013-11-20 15:10:17 +01:00
parent f9ee8703cf
commit a1189301c9

View file

@ -36,9 +36,6 @@
static void static void
gst_vaapi_surface_proxy_finalize(GstVaapiSurfaceProxy *proxy) gst_vaapi_surface_proxy_finalize(GstVaapiSurfaceProxy *proxy)
{ {
if (proxy->destroy_func)
proxy->destroy_func(proxy->destroy_data);
if (proxy->surface) { if (proxy->surface) {
if (proxy->pool) if (proxy->pool)
gst_vaapi_video_pool_put_object(proxy->pool, proxy->surface); gst_vaapi_video_pool_put_object(proxy->pool, proxy->surface);
@ -46,6 +43,10 @@ gst_vaapi_surface_proxy_finalize(GstVaapiSurfaceProxy *proxy)
proxy->surface = NULL; proxy->surface = NULL;
} }
gst_vaapi_video_pool_replace(&proxy->pool, NULL); gst_vaapi_video_pool_replace(&proxy->pool, NULL);
/* Notify the user function that the object is now destroyed */
if (proxy->destroy_func)
proxy->destroy_func(proxy->destroy_data);
} }
static inline const GstVaapiMiniObjectClass * static inline const GstVaapiMiniObjectClass *