From 3f8b4235168dea3314c9d0d77bb3f23cf8eb9713 Mon Sep 17 00:00:00 2001 From: Sebastian Rasmussen Date: Tue, 31 Dec 2013 13:31:52 +0100 Subject: [PATCH] v4l2: Handle v4l2_ioctl() errors even in error handling Fixes https://bugzilla.gnome.org/show_bug.cgi?id=721268 --- sys/v4l2/gstv4l2object.c | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/sys/v4l2/gstv4l2object.c b/sys/v4l2/gstv4l2object.c index e762cc9..844a47a 100644 --- a/sys/v4l2/gstv4l2object.c +++ b/sys/v4l2/gstv4l2object.c @@ -2242,6 +2242,7 @@ gst_v4l2_object_get_nearest_size (GstV4l2Object * v4l2object, int fd; int r; int prevfmt_valid; + gboolean ret = FALSE; g_return_val_if_fail (width != NULL, FALSE); g_return_val_if_fail (height != NULL, FALSE); @@ -2330,14 +2331,21 @@ gst_v4l2_object_get_nearest_size (GstV4l2Object * v4l2object, goto error; } - if (prevfmt_valid) - v4l2_ioctl (fd, VIDIOC_S_FMT, &prevfmt); - return TRUE; + ret = TRUE; error: + if (!ret) { + GST_WARNING_OBJECT (v4l2object->element, + "Unable to try format: %s", g_strerror (errno)); + } if (prevfmt_valid) - v4l2_ioctl (fd, VIDIOC_S_FMT, &prevfmt); - return FALSE; + if (v4l2_ioctl (fd, VIDIOC_S_FMT, &prevfmt) < 0) { + GST_WARNING_OBJECT (v4l2object->element, + "Unable to restore format after trying format: %s", + g_strerror (errno)); + } + + return ret; } static gboolean -- 2.7.4