Ticket #1757: myth_patch

File myth_patch, 1.1 KB (added by anonymous, 14 years ago)
Line 
1--- channel.cpp.orig    2006-04-30 18:12:26.000000000 +0200
2+++ channel.cpp 2006-05-01 00:44:59.000000000 +0200
3@@ -788,12 +788,23 @@
4 {
5     bool usingv4l1 = !usingv4l2;
6     bool ok = true;
7+    bool turnStreamingOnAgain = false;
8+    int streamType = V4L2_BUF_TYPE_VIDEO_CAPTURE;
9 
10     if (usingv4l2)
11     {
12         int ioctlval = ioctl(videofd, VIDIOC_S_INPUT, &newcapchannel);
13         if (ioctlval < 0)
14         {
15+            if ((errno == EBUSY) && (ioctl(videofd, VIDIOC_STREAMOFF, &streamType) == 0))
16+            {
17+                turnStreamingOnAgain = true;
18+                ioctlval = ioctl(videofd, VIDIOC_S_INPUT, &newcapchannel);
19+            }
20+        }
21+       
22+        if (ioctlval < 0)
23+        {
24             VERBOSE(VB_IMPORTANT, LOC_ERR + QString(
25                         "SetInputAndFormat(%1, %2) "
26                         "\n\t\t\twhile setting input (v4l v2)")
27@@ -819,6 +830,7 @@
28             usingv4l1 = true;
29             ok = false;
30         }
31+        if (turnStreamingOnAgain) ioctl(videofd, VIDIOC_STREAMON, &streamType);
32     }
33 
34     if (usingv4l1)