From 66e4593c33a55933d9736fc9989e3cdb0a8a628b Mon Sep 17 00:00:00 2001 From: =?utf8?q?V=C3=ADctor=20Manuel=20J=C3=A1quez=20Leal?= Date: Thu, 28 Sep 2017 18:58:17 +0200 Subject: [PATCH] libs: display: egl: avoid two vaDisplay instantiates GstVaapiDisplayEGL is a wrapper of another GstVaapiDisplay, either X11 or Wayland. Nonetheless it created another vaDisplay for it, instead of using the wrapped one. This patch enables the reuse of the wrapped vaDisplay avoiding instantiating two. https://bugzilla.gnome.org/show_bug.cgi?id=782212 --- gst-libs/gst/vaapi/gstvaapidisplay_egl.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/gst-libs/gst/vaapi/gstvaapidisplay_egl.c b/gst-libs/gst/vaapi/gstvaapidisplay_egl.c index 7d3d27e..fd5814e 100644 --- a/gst-libs/gst/vaapi/gstvaapidisplay_egl.c +++ b/gst-libs/gst/vaapi/gstvaapidisplay_egl.c @@ -189,6 +189,8 @@ gst_vaapi_display_egl_get_display_info (GstVaapiDisplay * base_display, GstVaapiDisplayClass *const klass = GST_VAAPI_DISPLAY_GET_CLASS (display->display); + info->va_display = GST_VAAPI_DISPLAY_VADISPLAY (display->display); + if (klass->get_display && !klass->get_display (display->display, info)) return FALSE; return TRUE; @@ -279,6 +281,11 @@ gst_vaapi_display_egl_finalize (GObject * object) if (dpy->texture_map) gst_object_unref (dpy->texture_map); + + /* HACK to avoid to call twice vaTerminate() since this and the + * proxied display share the same vaDisplay */ + GST_VAAPI_DISPLAY_VADISPLAY (object) = NULL; + G_OBJECT_CLASS (gst_vaapi_display_egl_parent_class)->finalize (object); } -- 2.7.4