From patchwork Wed Apr 16 19:34:06 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicolas Dufresne X-Patchwork-Id: 23641 X-Patchwork-Delegate: hverkuil@xs4all.nl Received: from mail.tu-berlin.de ([130.149.7.33]) by www.linuxtv.org with esmtp (Exim 4.72) (envelope-from ) id 1WaVbB-0003dD-2F; Wed, 16 Apr 2014 21:34:21 +0200 X-tubIT-Incoming-IP: 209.132.180.67 Received: from vger.kernel.org ([209.132.180.67]) by mail.tu-berlin.de (exim-4.72/mailfrontend-8) with esmtp id 1WaVb8-0003aJ-lI; Wed, 16 Apr 2014 21:34:20 +0200 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751659AbaDPTeP (ORCPT + 1 other); Wed, 16 Apr 2014 15:34:15 -0400 Received: from bhuna.collabora.co.uk ([93.93.135.160]:46148 "EHLO bhuna.collabora.co.uk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751305AbaDPTeN (ORCPT ); Wed, 16 Apr 2014 15:34:13 -0400 Received: from [127.0.0.1] (localhost [127.0.0.1]) (Authenticated sender: nicolas) with ESMTPSA id 859ED600725 Message-ID: <1397676846.10347.11.camel@nicolas-tpx230> Subject: [PATCH] vb2: Update buffer state flags after __vb2_dqbuf From: Nicolas Dufresne Reply-To: Nicolas Dufresne To: LMML Cc: Hans Verkuil Date: Wed, 16 Apr 2014 15:34:06 -0400 Organization: Collabora Ltd. X-Mailer: Evolution 3.10.4 (3.10.4-2.fc20) Mime-Version: 1.0 Sender: linux-media-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org X-PMX-Version: 6.0.0.2142326, Antispam-Engine: 2.7.2.2107409, Antispam-Data: 2014.4.16.192719 X-PMX-Spam: Gauge=IIIIIIII, Probability=8%, Report=' HTML_00_01 0.05, HTML_00_10 0.05, MIME_LOWER_CASE 0.05, MSGID_ADDED_BY_MTA 0.05, BODYTEXTP_SIZE_3000_LESS 0, BODY_SIZE_1900_1999 0, BODY_SIZE_2000_LESS 0, BODY_SIZE_5000_LESS 0, BODY_SIZE_7000_LESS 0, DATE_TZ_NA 0, INVALID_MSGID_NO_FQDN 0, URI_ENDS_IN_HTML 0, __ANY_URI 0, __CP_URI_IN_BODY 0, __CT 0, __CTYPE_HAS_BOUNDARY 0, __CTYPE_MULTIPART 0, __HAS_FROM 0, __HAS_MSGID 0, __HAS_REPLYTO 0, __HAS_X_MAILER 0, __HAS_X_MAILING_LIST 0, __MIME_VERSION 0, __REPLYTO_SAMEAS_FROM 0, __REPLYTO_SAMEAS_FROM_ACC 0, __REPLYTO_SAMEAS_FROM_ADDY 0, __REPLYTO_SAMEAS_FROM_DOMAIN 0, __SANE_MSGID 0, __TO_MALFORMED_2 0, __URI_NO_WWW 0, __URI_NS ' Previously we where updating the buffer state using __fill_v4l2_buffer before the state transition was completed through __vb2_dqbuf. This would cause the V4L2_BUF_FLAG_DONE to be set, which would mean it still queued. The spec says the dqbuf should clean the DONE flag, right not it alway set it. Signed-off-by: Nicolas Dufresne Acked-by: Laurent Pinchart --- drivers/media/v4l2-core/videobuf2-core.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/drivers/media/v4l2-core/videobuf2-core.c b/drivers/media/v4l2-core/videobuf2-core.c index f9059bb..ac5026a 100644 --- a/drivers/media/v4l2-core/videobuf2-core.c +++ b/drivers/media/v4l2-core/videobuf2-core.c @@ -1943,14 +1943,15 @@ static int vb2_internal_dqbuf(struct vb2_queue *q, struct v4l2_buffer *b, bool n call_vb_qop(vb, buf_finish, vb); - /* Fill buffer information for the userspace */ - __fill_v4l2_buffer(vb, b); /* Remove from videobuf queue */ list_del(&vb->queued_entry); q->queued_count--; /* go back to dequeued state */ __vb2_dqbuf(vb); + /* Fill buffer information for the userspace */ + __fill_v4l2_buffer(vb, b); + dprintk(1, "dqbuf of buffer %d, with state %d\n", vb->v4l2_buf.index, vb->state);