mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-12 21:44:06 +08:00
[media] media: v4l2-mem2mem: return for polling if a buffer is available
The v4l2_m2m_poll() does not need to wait if there is already a buffer in done_list of source and destination queues, but current v4l2_m2m_poll() always waits. So done_list of each queue is checked before calling poll_wait(). Signed-off-by: Seung-Woo Kim <sw0312.kim@samsung.com> Acked-by: Marek Szyprowski <m.szyprowski@samsung.com> Signed-off-by: Kamil Debski <k.debski@samsung.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This commit is contained in:
parent
412cb87d28
commit
57183467c0
@ -486,8 +486,10 @@ unsigned int v4l2_m2m_poll(struct file *file, struct v4l2_m2m_ctx *m2m_ctx,
|
||||
if (m2m_ctx->m2m_dev->m2m_ops->unlock)
|
||||
m2m_ctx->m2m_dev->m2m_ops->unlock(m2m_ctx->priv);
|
||||
|
||||
poll_wait(file, &src_q->done_wq, wait);
|
||||
poll_wait(file, &dst_q->done_wq, wait);
|
||||
if (list_empty(&src_q->done_list))
|
||||
poll_wait(file, &src_q->done_wq, wait);
|
||||
if (list_empty(&dst_q->done_list))
|
||||
poll_wait(file, &dst_q->done_wq, wait);
|
||||
|
||||
if (m2m_ctx->m2m_dev->m2m_ops->lock)
|
||||
m2m_ctx->m2m_dev->m2m_ops->lock(m2m_ctx->priv);
|
||||
|
Loading…
Reference in New Issue
Block a user