mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-06 19:08:57 +09:00
UPSTREAM: usb: gadget: uvc: only schedule stream in streaming state
This patch ensures that the video pump thread will only be scheduled if the uvc is really in streaming state. This way the worker will not have to run on an empty queue. Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Paul Elder <paul.elder@ideasonboard.com> Signed-off-by: Michael Grzeschik <m.grzeschik@pengutronix.de> Link: https://lore.kernel.org/r/20211017215017.18392-5-m.grzeschik@pengutronix.de Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> (cherry picked from commit5fc49d8bee) Bug: 242344221 Change-Id: I9b38b336d69e1840de6c557ad52d5f0c5e2afc96 Signed-off-by: Avichal Rakesh <arakesh@google.com> (cherry picked from commitd8b55ca86d)
This commit is contained in:
committed by
Avichal Rakesh
parent
6694692d2a
commit
0c8f2022f5
@@ -169,7 +169,8 @@ uvc_v4l2_qbuf(struct file *file, void *fh, struct v4l2_buffer *b)
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
schedule_work(&video->pump);
|
||||
if (uvc->state == UVC_STATE_STREAMING)
|
||||
schedule_work(&video->pump);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -224,6 +224,7 @@ uvc_video_complete(struct usb_ep *ep, struct usb_request *req)
|
||||
struct uvc_request *ureq = req->context;
|
||||
struct uvc_video *video = ureq->video;
|
||||
struct uvc_video_queue *queue = &video->queue;
|
||||
struct uvc_device *uvc = video->uvc;
|
||||
unsigned long flags;
|
||||
|
||||
switch (req->status) {
|
||||
@@ -256,7 +257,8 @@ uvc_video_complete(struct usb_ep *ep, struct usb_request *req)
|
||||
list_add_tail(&req->list, &video->req_free);
|
||||
spin_unlock_irqrestore(&video->req_lock, flags);
|
||||
|
||||
schedule_work(&video->pump);
|
||||
if (uvc->state == UVC_STATE_STREAMING)
|
||||
schedule_work(&video->pump);
|
||||
}
|
||||
|
||||
static int
|
||||
|
||||
Reference in New Issue
Block a user