v4l2: use GST_RESOURCE_ERROR_BUSY if v4l2_ioctl fails with EBUSY
authorGuillaume Desmottes <guillaume.desmottes@collabora.co.uk>
Thu, 8 Sep 2011 11:28:24 +0000 (13:28 +0200)
committerSebastian Dröge <sebastian.droege@collabora.co.uk>
Thu, 8 Sep 2011 13:04:42 +0000 (15:04 +0200)
https://bugzilla.gnome.org/show_bug.cgi?id=658543

sys/v4l2/gstv4l2object.c

index 24a4123..e361970 100644 (file)
@@ -2175,11 +2175,20 @@ get_fmt_failed:
   }
 set_fmt_failed:
   {
-    GST_ELEMENT_ERROR (v4l2object->element, RESOURCE, SETTINGS,
-        (_("Device '%s' cannot capture at %dx%d"),
-            v4l2object->videodev, width, height),
-        ("Call to S_FMT failed for %" GST_FOURCC_FORMAT " @ %dx%d: %s",
-            GST_FOURCC_ARGS (pixelformat), width, height, g_strerror (errno)));
+    if (errno == EBUSY) {
+      GST_ELEMENT_ERROR (v4l2object->element, RESOURCE, BUSY,
+          (_("Device '%s' is busy"), v4l2object->videodev),
+          ("Call to S_FMT failed for %" GST_FOURCC_FORMAT " @ %dx%d: %s",
+              GST_FOURCC_ARGS (pixelformat), width, height,
+              g_strerror (errno)));
+    } else {
+      GST_ELEMENT_ERROR (v4l2object->element, RESOURCE, SETTINGS,
+          (_("Device '%s' cannot capture at %dx%d"),
+              v4l2object->videodev, width, height),
+          ("Call to S_FMT failed for %" GST_FOURCC_FORMAT " @ %dx%d: %s",
+              GST_FOURCC_ARGS (pixelformat), width, height,
+              g_strerror (errno)));
+    }
     return FALSE;
   }
 invalid_dimensions: