Parcourir la source

linux-v4l2: Fix ignored return value

jpark37 il y a 4 ans
Parent
commit
2c1610017d
1 fichiers modifiés avec 8 ajouts et 1 suppressions
  1. 8 1
      plugins/linux-v4l2/v4l2-output.c

+ 8 - 1
plugins/linux-v4l2/v4l2-output.c

@@ -177,7 +177,14 @@ static void virtualcam_stop(void *data, uint64_t ts)
 static void virtual_video(void *param, struct video_data *frame)
 {
 	struct virtualcam_data *vcam = (struct virtualcam_data *)param;
-	write(vcam->device, frame->data[0], vcam->frame_size);
+	uint32_t frame_size = vcam->frame_size;
+	while (frame_size > 0) {
+		ssize_t written =
+			write(vcam->device, frame->data[0], vcam->frame_size);
+		if (written == -1)
+			break;
+		frame_size -= written;
+	}
 }
 
 struct obs_output_info virtualcam_info = {