[media] vb2-core: call threadio->fnc() if !VB2_BUF_STATE_ERROR
diff mbox

Message ID 788b10195174037a7d3d3011c9f2a4a7170bc0a8.1454538542.git.mchehab@osg.samsung.com
State New
Headers show

Commit Message

Mauro Carvalho Chehab Feb. 3, 2016, 10:30 p.m. UTC
changeset 70433a152f0 ("media: videobuf2: Refactor vb2_fileio_data
and vb2_thread") broke videobuf2-dvb.

The root cause is that, instead of calling threadio->fnc() for
all types of events except for VB2_BUF_STATE_ERROR, it was calling
it only for VB2_BUF_STATE_DONE.

With that, the DVB thread were never called.

Cc: Hans Verkuil <hverkuil@xs4all.nl>
Cc: Junghak Sung <jh1009.sung@samsung.com>
Cc: Matthias Schwarzott <zzam@gentoo.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
---

This patch should be applied after https://patchwork.linuxtv.org/patch/32734/

 drivers/media/v4l2-core/videobuf2-core.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Matthias Schwarzott Feb. 4, 2016, 9:35 p.m. UTC | #1
Am 03.02.2016 um 23:30 schrieb Mauro Carvalho Chehab:
> changeset 70433a152f0 ("media: videobuf2: Refactor vb2_fileio_data
> and vb2_thread") broke videobuf2-dvb.
> 
> The root cause is that, instead of calling threadio->fnc() for
> all types of events except for VB2_BUF_STATE_ERROR, it was calling
> it only for VB2_BUF_STATE_DONE.
> 
> With that, the DVB thread were never called.
> 
With this patch applied, I can confirm that receiving of dvb data works
again.

Regards
Matthias

--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Patch
diff mbox

diff --git a/drivers/media/v4l2-core/videobuf2-core.c b/drivers/media/v4l2-core/videobuf2-core.c
index 27b3ed01ce4d..dab94080ec3a 100644
--- a/drivers/media/v4l2-core/videobuf2-core.c
+++ b/drivers/media/v4l2-core/videobuf2-core.c
@@ -2743,7 +2743,7 @@  static int vb2_thread(void *data)
 			break;
 		try_to_freeze();
 
-		if (vb->state == VB2_BUF_STATE_DONE)
+		if (vb->state != VB2_BUF_STATE_ERROR)
 			if (threadio->fnc(vb, threadio->priv))
 				break;
 		call_void_qop(q, wait_finish, q);