libv4l: recognize when controls are disabled
authorhans@rhel5-devel.localdomain <hans@rhel5-devel.localdomain>
Fri, 5 Jun 2009 14:02:40 +0000 (16:02 +0200)
committerhans@rhel5-devel.localdomain <hans@rhel5-devel.localdomain>
Fri, 5 Jun 2009 14:02:40 +0000 (16:02 +0200)
From: Hans de Goede <hdegoede@redhat.com>

libv4l: recognize when controls are disabled

Priority: normal

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
lib/ChangeLog
lib/libv4lconvert/control/libv4lcontrol.c

index 08b221c..3d0733a 100644 (file)
@@ -1,11 +1,16 @@
+libv4l-0.6.0
+------------
+* Recognize disabled controls and replace with fake equivalents where
+  available
+
 libv4l-0.5.99
-----------
+-------------
 * Link libv4lconvert with -lm for powf by Gregor Jasny
 * Fix black screen on devices with hardware gamma control
 * Fix crash with devices on which we do not emulate fake controls
 * Add a patch by Hans Petter Selasky <hselasky@freebsd.org>, which should
   lead to allowing use of libv4l (and the Linux webcam drivers ported
-  to userspace usb drivers) on FreeBSd, this is a work in progress
+  to userspace usb drivers) on FreeBSD, this is a work in progress
 
 libv4l-0.5.98
 -------------
index 2f459c3..b50b686 100644 (file)
@@ -203,7 +203,7 @@ static void v4lcontrol_init_flags(struct v4lcontrol_data *data)
 struct v4lcontrol_data *v4lcontrol_create(int fd, int always_needs_conversion)
 {
   int shm_fd;
-  int i, init = 0;
+  int i, rc, init = 0;
   char *s, shm_name[256];
   struct v4l2_capability cap;
   struct v4l2_queryctrl ctrl;
@@ -230,7 +230,8 @@ struct v4lcontrol_data *v4lcontrol_create(int fd, int always_needs_conversion)
   if (always_needs_conversion || v4lcontrol_needs_conversion(data)) {
     for (i = 0; i < V4LCONTROL_AUTO_ENABLE_COUNT; i++) {
       ctrl.id = fake_controls[i].id;
-      if (SYS_IOCTL(data->fd, VIDIOC_QUERYCTRL, &ctrl) == -1)
+      rc = SYS_IOCTL(data->fd, VIDIOC_QUERYCTRL, &ctrl);
+      if (rc == -1 || (rc == 0 && (ctrl.flags & V4L2_CTRL_FLAG_DISABLED)))
        data->controls |= 1 << i;
     }
   }