diff --git a/gst-libs/gst/vaapi/gstvaapidisplay.c b/gst-libs/gst/vaapi/gstvaapidisplay.c index 7c6588afb7..ad6ebcbe22 100644 --- a/gst-libs/gst/vaapi/gstvaapidisplay.c +++ b/gst-libs/gst/vaapi/gstvaapidisplay.c @@ -649,8 +649,11 @@ ensure_image_formats (GstVaapiDisplay * display) gint i, n; gboolean success = FALSE; - if (priv->image_formats) + GST_VAAPI_DISPLAY_LOCK (display); + if (priv->image_formats) { + GST_VAAPI_DISPLAY_UNLOCK (display); return TRUE; + } priv->image_formats = g_array_new (FALSE, FALSE, sizeof (GstVaapiFormatInfo)); if (!priv->image_formats) @@ -676,6 +679,7 @@ ensure_image_formats (GstVaapiDisplay * display) cleanup: g_free (formats); + GST_VAAPI_DISPLAY_UNLOCK (display); return success; } @@ -690,8 +694,11 @@ ensure_subpicture_formats (GstVaapiDisplay * display) guint i, n; gboolean success = FALSE; - if (priv->subpicture_formats) + GST_VAAPI_DISPLAY_LOCK (display); + if (priv->subpicture_formats) { + GST_VAAPI_DISPLAY_UNLOCK (display); return TRUE; + } priv->subpicture_formats = g_array_new (FALSE, FALSE, sizeof (GstVaapiFormatInfo)); @@ -725,6 +732,7 @@ ensure_subpicture_formats (GstVaapiDisplay * display) cleanup: g_free (formats); g_free (flags); + GST_VAAPI_DISPLAY_UNLOCK (display); return success; }