v4l2: guard use of ENODATA with #ifdef
authorRyan Lortie <desrt@desrt.ca>
Sat, 25 Jan 2014 07:06:00 +0000 (02:06 -0500)
committerSebastian Dröge <sebastian@centricular.com>
Sat, 25 Jan 2014 17:51:41 +0000 (18:51 +0100)
Not all systems with v4l have ENODATA defined, so check that we have it
before attempting to use it.

https://bugzilla.gnome.org/show_bug.cgi?id=722953

sys/v4l2/v4l2_calls.c

index 7b2a4e4610b21c135bf8af3f3c4070036920461b..986df76af07ddb2e88fdc6c03a8bf885673c1cf9 100644 (file)
@@ -205,8 +205,12 @@ gst_v4l2_fill_lists (GstV4l2Object * v4l2object)
     standard.index = n;
 
     if (v4l2_ioctl (v4l2object->video_fd, VIDIOC_ENUMSTD, &standard) < 0) {
-      if (errno == EINVAL || errno == ENOTTY || errno == ENODATA)
+      if (errno == EINVAL || errno == ENOTTY)
         break;                  /* end of enumeration */
+#ifdef ENODATA
+      else if (errno == ENODATA)
+        break;                  /* end of enumeration, as of Linux 3.7-rc1 */
+#endif
       else {
         GST_ELEMENT_ERROR (e, RESOURCE, SETTINGS,
             (_("Failed to query norm on device '%s'."),