From 3a2c77dcc6e154a0c911dc8d40715a00189426db Mon Sep 17 00:00:00 2001 From: Ezequiel Garcia Date: Wed, 26 Sep 2012 07:30:34 -0300 Subject: [PATCH] --- yaml --- r: 333839 b: refs/heads/master c: 5712661d643099bda44909cfd75560fcda72c387 h: refs/heads/master i: 333837: 3cde94352e6d9cf7bc428f7936c654ae3577528a 333835: d9d51b47eb23f5998310f61f01814bc643e0d7f1 333831: 620ca3f6c43ebca3b225038e4d4a7fab258c6f18 333823: 57a241b461ab44410fb256eecf6c0280954c5313 v: v3 --- [refs] | 2 +- trunk/drivers/media/usb/uvc/uvc_queue.c | 10 ++++++++-- trunk/drivers/media/usb/uvc/uvc_video.c | 4 +++- trunk/drivers/media/usb/uvc/uvcvideo.h | 2 +- 4 files changed, 13 insertions(+), 5 deletions(-) diff --git a/[refs] b/[refs] index ef4e9a7f0ffa..a9778601cdfb 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: e0f6e4d6ff8d82ca6813f47d12f85224d7491d9e +refs/heads/master: 5712661d643099bda44909cfd75560fcda72c387 diff --git a/trunk/drivers/media/usb/uvc/uvc_queue.c b/trunk/drivers/media/usb/uvc/uvc_queue.c index 5577381b5bf0..18a91fae6bc1 100644 --- a/trunk/drivers/media/usb/uvc/uvc_queue.c +++ b/trunk/drivers/media/usb/uvc/uvc_queue.c @@ -122,21 +122,27 @@ static struct vb2_ops uvc_queue_qops = { .buf_finish = uvc_buffer_finish, }; -void uvc_queue_init(struct uvc_video_queue *queue, enum v4l2_buf_type type, +int uvc_queue_init(struct uvc_video_queue *queue, enum v4l2_buf_type type, int drop_corrupted) { + int ret; + queue->queue.type = type; queue->queue.io_modes = VB2_MMAP | VB2_USERPTR; queue->queue.drv_priv = queue; queue->queue.buf_struct_size = sizeof(struct uvc_buffer); queue->queue.ops = &uvc_queue_qops; queue->queue.mem_ops = &vb2_vmalloc_memops; - vb2_queue_init(&queue->queue); + ret = vb2_queue_init(&queue->queue); + if (ret) + return ret; mutex_init(&queue->mutex); spin_lock_init(&queue->irqlock); INIT_LIST_HEAD(&queue->irqqueue); queue->flags = drop_corrupted ? UVC_QUEUE_DROP_CORRUPTED : 0; + + return 0; } /* ----------------------------------------------------------------------------- diff --git a/trunk/drivers/media/usb/uvc/uvc_video.c b/trunk/drivers/media/usb/uvc/uvc_video.c index 1c15b4227bdb..57c3076a4625 100644 --- a/trunk/drivers/media/usb/uvc/uvc_video.c +++ b/trunk/drivers/media/usb/uvc/uvc_video.c @@ -1755,7 +1755,9 @@ int uvc_video_init(struct uvc_streaming *stream) atomic_set(&stream->active, 0); /* Initialize the video buffers queue. */ - uvc_queue_init(&stream->queue, stream->type, !uvc_no_drop_param); + ret = uvc_queue_init(&stream->queue, stream->type, !uvc_no_drop_param); + if (ret) + return ret; /* Alternate setting 0 should be the default, yet the XBox Live Vision * Cam (and possibly other devices) crash or otherwise misbehave if diff --git a/trunk/drivers/media/usb/uvc/uvcvideo.h b/trunk/drivers/media/usb/uvc/uvcvideo.h index 3764040475bb..af216ec45e39 100644 --- a/trunk/drivers/media/usb/uvc/uvcvideo.h +++ b/trunk/drivers/media/usb/uvc/uvcvideo.h @@ -600,7 +600,7 @@ extern struct uvc_driver uvc_driver; extern struct uvc_entity *uvc_entity_by_id(struct uvc_device *dev, int id); /* Video buffers queue management. */ -extern void uvc_queue_init(struct uvc_video_queue *queue, +extern int uvc_queue_init(struct uvc_video_queue *queue, enum v4l2_buf_type type, int drop_corrupted); extern int uvc_alloc_buffers(struct uvc_video_queue *queue, struct v4l2_requestbuffers *rb);