X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=v4l2proxy.cpp;fp=v4l2proxy.cpp;h=7ead4aa1b60f352ca5070724aed68a9a0225f4e5;hb=1deaab39a80036118924ab4e446d4aa10f03ade9;hp=4e0b36b3d1b40da41fbe07d10afc3abb67613ce1;hpb=4d2a22c9d5f3c8a5d2e948bc4afba85b4735d9e6;p=bmusb diff --git a/v4l2proxy.cpp b/v4l2proxy.cpp index 4e0b36b..7ead4aa 100644 --- a/v4l2proxy.cpp +++ b/v4l2proxy.cpp @@ -12,6 +12,7 @@ #include #include #include +#include #include #include #include @@ -84,7 +85,20 @@ void frame_callback(uint16_t timecode, } #endif - write(video_fd, origptr, video_frame.len); + size_t len = video_frame.len; + while (len > 0) { + ssize_t ret = write(video_fd, origptr, len); + if (ret == -1) { + if (errno == EINTR) { + continue; + } else { + perror("write"); + break; // Hope for better luck next frame. + } + } + origptr += ret; + len -= ret; + } } usb->get_video_frame_allocator()->release_frame(video_frame);