diff options
author | Tim-Philipp Müller <tim@centricular.net> | 2012-09-13 01:07:46 +0100 |
---|---|---|
committer | Tim-Philipp Müller <tim@centricular.net> | 2012-09-13 01:09:56 +0100 |
commit | 4ed3d60bd28484d65b0d3502701cd657e93d1484 (patch) | |
tree | f4879755366841ff8f8335b644df552f0b9636af | |
parent | 871f7e0450aaf69dc7cf66e48a1b679167c5e19b (diff) | |
download | gstreamer-plugins-bad-4ed3d60bd28484d65b0d3502701cd657e93d1484.tar.gz |
waylandsink: fail gracefully with an error message if we can't connect to wayland
g_return_val_if_fail() is not for error handling, it's for
catching programming errors in public API.
Fixes problem with generic/states unit test.
-rw-r--r-- | ext/wayland/gstwaylandsink.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/ext/wayland/gstwaylandsink.c b/ext/wayland/gstwaylandsink.c index a7053a18e..32b695d7f 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; } |