mirror of
https://github.com/opencv/opencv.git
synced 2024-11-29 05:29:54 +08:00
cap-v4l: remove unwanted loop in V4L2 mainloop
The while loop would run only once making it useless and leading to confusion. So, remove the unwanted while loop and just keep an infinite for loop.
This commit is contained in:
parent
10c570b558
commit
a527e8cc73
@ -857,45 +857,39 @@ static int read_frame_v4l2(CvCaptureCAM_V4L* capture) {
|
||||
}
|
||||
|
||||
static int mainloop_v4l2(CvCaptureCAM_V4L* capture) {
|
||||
unsigned int count;
|
||||
for (;;) {
|
||||
fd_set fds;
|
||||
struct timeval tv;
|
||||
int r;
|
||||
|
||||
count = 1;
|
||||
FD_ZERO (&fds);
|
||||
FD_SET (capture->deviceHandle, &fds);
|
||||
|
||||
while (count-- > 0) {
|
||||
for (;;) {
|
||||
fd_set fds;
|
||||
struct timeval tv;
|
||||
int r;
|
||||
/* Timeout. */
|
||||
tv.tv_sec = 10;
|
||||
tv.tv_usec = 0;
|
||||
|
||||
FD_ZERO (&fds);
|
||||
FD_SET (capture->deviceHandle, &fds);
|
||||
r = select (capture->deviceHandle+1, &fds, NULL, NULL, &tv);
|
||||
|
||||
/* Timeout. */
|
||||
tv.tv_sec = 10;
|
||||
tv.tv_usec = 0;
|
||||
if (-1 == r) {
|
||||
if (EINTR == errno)
|
||||
continue;
|
||||
|
||||
r = select (capture->deviceHandle+1, &fds, NULL, NULL, &tv);
|
||||
|
||||
if (-1 == r) {
|
||||
if (EINTR == errno)
|
||||
continue;
|
||||
|
||||
perror ("select");
|
||||
}
|
||||
|
||||
if (0 == r) {
|
||||
fprintf (stderr, "select timeout\n");
|
||||
|
||||
/* end the infinite loop */
|
||||
break;
|
||||
}
|
||||
|
||||
int returnCode = read_frame_v4l2 (capture);
|
||||
if(returnCode == -1)
|
||||
return -1;
|
||||
if(returnCode == 1)
|
||||
return 1;
|
||||
perror ("select");
|
||||
}
|
||||
|
||||
if (0 == r) {
|
||||
fprintf (stderr, "select timeout\n");
|
||||
|
||||
/* end the infinite loop */
|
||||
break;
|
||||
}
|
||||
|
||||
int returnCode = read_frame_v4l2 (capture);
|
||||
if(returnCode == -1)
|
||||
return -1;
|
||||
if(returnCode == 1)
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user