summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim-Philipp Müller <tim@centricular.net>2012-09-13 01:07:46 +0100
committerTim-Philipp Müller <tim@centricular.net>2012-09-13 01:09:56 +0100
commit4ed3d60bd28484d65b0d3502701cd657e93d1484 (patch)
treef4879755366841ff8f8335b644df552f0b9636af
parent871f7e0450aaf69dc7cf66e48a1b679167c5e19b (diff)
downloadgstreamer-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.c13
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;
}