From c1c858f2733aba9fd8f6120656b0db20a66b6c77 Mon Sep 17 00:00:00 2001 From: Gary Ching-Pang Lin Date: Thu, 16 Feb 2012 17:14:20 +0800 Subject: [PATCH] v4l2src: failure to query some optional controls is not a fatal error Don't post a (fatal) error message on the bus just because we failed to query some control. Fixes issue with built-in Suyin Corp webcam for HP notebook (usbid 064e:e28a) on OpenSuse 12.1, where querying red/blue balance fails. https://bugzilla.gnome.org/show_bug.cgi?id=670197 --- sys/v4l2/v4l2_calls.c | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/sys/v4l2/v4l2_calls.c b/sys/v4l2/v4l2_calls.c index c8af0a6..309bfb6 100644 --- a/sys/v4l2/v4l2_calls.c +++ b/sys/v4l2/v4l2_calls.c @@ -253,7 +253,7 @@ gst_v4l2_fill_lists (GstV4l2Object * v4l2object) control.id = n; if (v4l2_ioctl (v4l2object->video_fd, VIDIOC_QUERYCTRL, &control) < 0) { - if (errno == EINVAL || errno == ENOTTY) { + if (errno == EINVAL || errno == ENOTTY || errno == EIO) { if (n < V4L2_CID_PRIVATE_BASE) { GST_DEBUG_OBJECT (e, "skipping control %08x", n); /* continue so that we also check private controls */ @@ -263,12 +263,9 @@ gst_v4l2_fill_lists (GstV4l2Object * v4l2object) break; } } else { - GST_ELEMENT_ERROR (e, RESOURCE, SETTINGS, - (_("Failed getting controls attributes on device '%s'."), - v4l2object->videodev), - ("Failed querying control %d on device '%s'. (%d - %s)", - n, v4l2object->videodev, errno, strerror (errno))); - return FALSE; + GST_WARNING_OBJECT (e, "Failed querying control %d on device '%s'. " + "(%d - %s)", n, v4l2object->videodev, errno, strerror (errno)); + continue; } } if (control.flags & V4L2_CTRL_FLAG_DISABLED) { -- 2.7.4