diff options
Diffstat (limited to 'gst-libs/gst')
-rw-r--r-- | gst-libs/gst/vaapi/gstvaapidisplay_wayland.c | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/gst-libs/gst/vaapi/gstvaapidisplay_wayland.c b/gst-libs/gst/vaapi/gstvaapidisplay_wayland.c index ec2c81a2..bb91128b 100644 --- a/gst-libs/gst/vaapi/gstvaapidisplay_wayland.c +++ b/gst-libs/gst/vaapi/gstvaapidisplay_wayland.c @@ -285,12 +285,11 @@ gst_vaapi_display_wayland_open_display(GstVaapiDisplay * display) GstVaapiDisplayWaylandPrivate * const priv = GST_VAAPI_DISPLAY_WAYLAND(display)->priv; - if (!priv->create_display) - return priv->wl_display != NULL; - - priv->wl_display = wl_display_connect(get_display_name(display)); - if (!priv->wl_display) - return FALSE; + if (priv->create_display) { + priv->wl_display = wl_display_connect(get_display_name(display)); + if (!priv->wl_display) + return FALSE; + } wl_display_set_user_data(priv->wl_display, priv); priv->registry = wl_display_get_registry(priv->wl_display); @@ -298,6 +297,14 @@ gst_vaapi_display_wayland_open_display(GstVaapiDisplay * display) priv->event_fd = wl_display_get_fd(priv->wl_display); wl_display_roundtrip(priv->wl_display); + if (!priv->width || !priv->height) { + wl_display_roundtrip(priv->wl_display); + if (!priv->width || !priv->height) { + GST_ERROR("failed to determine the display size"); + return FALSE; + } + } + if (!priv->compositor) { GST_ERROR("failed to bind compositor interface"); return FALSE; |