diff --git a/ext/wayland/gstwaylandsink.c b/ext/wayland/gstwaylandsink.c index a7053a18e3fcc2cb11e68f531a4eab0c03ff9d90..32b695d7fb0ab9191910e91a82ed5e9e84fbcf65 100644 --- a/ext/wayland/gstwaylandsink.c +++ b/ext/wayland/gstwaylandsink.c @@ -307,7 +307,11 @@ create_display (void) display = malloc (sizeof *display); display->display = wl_display_connect (NULL); - g_return_val_if_fail (display->display, NULL); + + if (display->display == NULL) { + free (display); + return NULL; + } wl_display_add_global_listener (display->display, display_handle_global, display); @@ -451,6 +455,13 @@ gst_wayland_sink_start (GstBaseSink * bsink) if (!sink->display) sink->display = create_display (); + if (sink->display == NULL) { + GST_ELEMENT_ERROR (bsink, RESOURCE, OPEN_READ_WRITE, + ("Could not initialise Wayland output"), + ("Could not create Wayland display")); + return FALSE; + } + return result; }