[{"id":2995,"web_url":"https://patchwork.libcamera.org/comment/2995/","msgid":"<20191106081109.ds672rgl5h5yhqja@uno.localdomain>","date":"2019-11-06T08:11:09","subject":"Re: [libcamera-devel] [PATCH 08/10] libcamera: pipelines: Align\n\twhere to call base class queueRequest()","submitter":{"id":3,"url":"https://patchwork.libcamera.org/api/people/3/","name":"Jacopo Mondi","email":"jacopo@jmondi.org"},"content":"Hi Niklas,\n    thanks for the patch\n\nOn Mon, Oct 28, 2019 at 03:22:22AM +0100, Niklas Söderlund wrote:\n> The PipelineHandler base class queueRequest() where called at different\n> points in different pipeline handlers. Align where they are called to\n> make it easier to read different pipeline implementations.\n>\n> Signed-off-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>\n> ---\n>  src/libcamera/pipeline/ipu3/ipu3.cpp     | 5 +++--\n>  src/libcamera/pipeline/rkisp1/rkisp1.cpp | 4 +---\n>  src/libcamera/pipeline/uvcvideo.cpp      | 4 +---\n>  src/libcamera/pipeline/vimc.cpp          | 4 +---\n>  4 files changed, 6 insertions(+), 11 deletions(-)\n>\n> diff --git a/src/libcamera/pipeline/ipu3/ipu3.cpp b/src/libcamera/pipeline/ipu3/ipu3.cpp\n> index 8d3ad568d16e9f8f..06ee6ccac641eb41 100644\n> --- a/src/libcamera/pipeline/ipu3/ipu3.cpp\n> +++ b/src/libcamera/pipeline/ipu3/ipu3.cpp\n> @@ -768,9 +768,10 @@ int PipelineHandlerIPU3::queueRequest(Camera *camera, Request *request)\n>  \t\t\terror = ret;\n>  \t}\n>\n> -\tPipelineHandler::queueRequest(camera, request);\n> +\tif (error)\n> +\t\treturn error;\n\nI wonder if, since we are now queueing the request if no buffer\nqueuing fails, isn't it better to return immediately as soon as\n\n\t\tint ret = stream->device_->dev->queueBuffer(buffer);\n\nfails, in the for() loop ?\n\n\n>\n> -\treturn error;\n> +\treturn PipelineHandler::queueRequest(camera, request);\n\nHere and in all below parts: PipelineHandler::queueRequest() returns 0\nunconditionally. As of now this patch does not change anything, but\nmaybe in future we'll made queueRequest() return a real value, so it\nmight be good to have it like this already ?\n\nThanks\n   j\n\n>  }\n>\n>  bool PipelineHandlerIPU3::match(DeviceEnumerator *enumerator)\n> diff --git a/src/libcamera/pipeline/rkisp1/rkisp1.cpp b/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n> index 7a28b03b8d38c8b9..a99df4f8b846d8b7 100644\n> --- a/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n> +++ b/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n> @@ -814,8 +814,6 @@ int PipelineHandlerRkISP1::queueRequest(Camera *camera, Request *request)\n>  \tRkISP1CameraData *data = cameraData(camera);\n>  \tStream *stream = &data->stream_;\n>\n> -\tPipelineHandler::queueRequest(camera, request);\n> -\n>  \tRkISP1FrameInfo *info = data->frameInfo_.create(data->frame_, request,\n>  \t\t\t\t\t\t\tstream);\n>  \tif (!info)\n> @@ -833,7 +831,7 @@ int PipelineHandlerRkISP1::queueRequest(Camera *camera, Request *request)\n>\n>  \tdata->frame_++;\n>\n> -\treturn 0;\n> +\treturn PipelineHandler::queueRequest(camera, request);\n>  }\n>\n>  /* -----------------------------------------------------------------------------\n> diff --git a/src/libcamera/pipeline/uvcvideo.cpp b/src/libcamera/pipeline/uvcvideo.cpp\n> index fae0ffc4de30e1b7..dc17b456af6987e6 100644\n> --- a/src/libcamera/pipeline/uvcvideo.cpp\n> +++ b/src/libcamera/pipeline/uvcvideo.cpp\n> @@ -281,9 +281,7 @@ int PipelineHandlerUVC::queueRequest(Camera *camera, Request *request)\n>  \tif (ret < 0)\n>  \t\treturn ret;\n>\n> -\tPipelineHandler::queueRequest(camera, request);\n> -\n> -\treturn 0;\n> +\treturn PipelineHandler::queueRequest(camera, request);\n>  }\n>\n>  bool PipelineHandlerUVC::match(DeviceEnumerator *enumerator)\n> diff --git a/src/libcamera/pipeline/vimc.cpp b/src/libcamera/pipeline/vimc.cpp\n> index c16ae4cb76b57e1c..5f83ae2b85997828 100644\n> --- a/src/libcamera/pipeline/vimc.cpp\n> +++ b/src/libcamera/pipeline/vimc.cpp\n> @@ -341,9 +341,7 @@ int PipelineHandlerVimc::queueRequest(Camera *camera, Request *request)\n>  \tif (ret < 0)\n>  \t\treturn ret;\n>\n> -\tPipelineHandler::queueRequest(camera, request);\n> -\n> -\treturn 0;\n> +\treturn PipelineHandler::queueRequest(camera, request);\n>  }\n>\n>  bool PipelineHandlerVimc::match(DeviceEnumerator *enumerator)\n> --\n> 2.23.0\n>\n> _______________________________________________\n> libcamera-devel mailing list\n> libcamera-devel@lists.libcamera.org\n> https://lists.libcamera.org/listinfo/libcamera-devel","headers":{"Return-Path":"<jacopo@jmondi.org>","Received":["from relay11.mail.gandi.net (relay11.mail.gandi.net\n\t[217.70.178.231])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 4415360C41\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed,  6 Nov 2019 09:09:13 +0100 (CET)","from uno.localdomain (2-224-242-101.ip172.fastwebnet.it\n\t[2.224.242.101]) (Authenticated sender: jacopo@jmondi.org)\n\tby relay11.mail.gandi.net (Postfix) with ESMTPSA id C7CCC100010;\n\tWed,  6 Nov 2019 08:09:12 +0000 (UTC)"],"Date":"Wed, 6 Nov 2019 09:11:09 +0100","From":"Jacopo Mondi <jacopo@jmondi.org>","To":"Niklas =?utf-8?q?S=C3=B6derlund?= <niklas.soderlund@ragnatech.se>","Cc":"libcamera-devel@lists.libcamera.org","Message-ID":"<20191106081109.ds672rgl5h5yhqja@uno.localdomain>","References":"<20191028022224.795355-1-niklas.soderlund@ragnatech.se>\n\t<20191028022224.795355-9-niklas.soderlund@ragnatech.se>","MIME-Version":"1.0","Content-Type":"multipart/signed; micalg=pgp-sha256;\n\tprotocol=\"application/pgp-signature\"; boundary=\"qbgjj5hg4xczo7rm\"","Content-Disposition":"inline","In-Reply-To":"<20191028022224.795355-9-niklas.soderlund@ragnatech.se>","User-Agent":"NeoMutt/20180716","Subject":"Re: [libcamera-devel] [PATCH 08/10] libcamera: pipelines: Align\n\twhere to call base class queueRequest()","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","X-List-Received-Date":"Wed, 06 Nov 2019 08:09:13 -0000"}},{"id":3054,"web_url":"https://patchwork.libcamera.org/comment/3054/","msgid":"<20191118113912.GK4724@pendragon.ideasonboard.com>","date":"2019-11-18T11:39:12","subject":"Re: [libcamera-devel] [PATCH 08/10] libcamera: pipelines: Align\n\twhere to call base class queueRequest()","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"Hi Niklas,\n\nThank you for the patch.\n\nOn Mon, Oct 28, 2019 at 03:22:22AM +0100, Niklas Söderlund wrote:\n> The PipelineHandler base class queueRequest() where called at different\n\ns/where called/is called/ ?\n\n> points in different pipeline handlers. Align where they are called to\n> make it easier to read different pipeline implementations.\n\ns/pipeline/pipeline handler/\n\n> \n> Signed-off-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>\n> ---\n>  src/libcamera/pipeline/ipu3/ipu3.cpp     | 5 +++--\n>  src/libcamera/pipeline/rkisp1/rkisp1.cpp | 4 +---\n>  src/libcamera/pipeline/uvcvideo.cpp      | 4 +---\n>  src/libcamera/pipeline/vimc.cpp          | 4 +---\n>  4 files changed, 6 insertions(+), 11 deletions(-)\n> \n> diff --git a/src/libcamera/pipeline/ipu3/ipu3.cpp b/src/libcamera/pipeline/ipu3/ipu3.cpp\n> index 8d3ad568d16e9f8f..06ee6ccac641eb41 100644\n> --- a/src/libcamera/pipeline/ipu3/ipu3.cpp\n> +++ b/src/libcamera/pipeline/ipu3/ipu3.cpp\n> @@ -768,9 +768,10 @@ int PipelineHandlerIPU3::queueRequest(Camera *camera, Request *request)\n>  \t\t\terror = ret;\n>  \t}\n>  \n> -\tPipelineHandler::queueRequest(camera, request);\n> +\tif (error)\n> +\t\treturn error;\n\nShould we instead return an error immediately in the above loop instead\nof continuing ?\n\n>  \n> -\treturn error;\n> +\treturn PipelineHandler::queueRequest(camera, request);\n>  }\n>  \n>  bool PipelineHandlerIPU3::match(DeviceEnumerator *enumerator)\n> diff --git a/src/libcamera/pipeline/rkisp1/rkisp1.cpp b/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n> index 7a28b03b8d38c8b9..a99df4f8b846d8b7 100644\n> --- a/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n> +++ b/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n> @@ -814,8 +814,6 @@ int PipelineHandlerRkISP1::queueRequest(Camera *camera, Request *request)\n>  \tRkISP1CameraData *data = cameraData(camera);\n>  \tStream *stream = &data->stream_;\n>  \n> -\tPipelineHandler::queueRequest(camera, request);\n> -\n>  \tRkISP1FrameInfo *info = data->frameInfo_.create(data->frame_, request,\n>  \t\t\t\t\t\t\tstream);\n>  \tif (!info)\n> @@ -833,7 +831,7 @@ int PipelineHandlerRkISP1::queueRequest(Camera *camera, Request *request)\n>  \n>  \tdata->frame_++;\n>  \n> -\treturn 0;\n> +\treturn PipelineHandler::queueRequest(camera, request);\n\nWhat if the request completes before PipelineHandler::queueRequest() is\ncalled ? This isn't really a problem today, but may become one later\nwhen we'll use threads in pipeline handlers. The queueRequest() method\ncould be called from a thread different than the one running the\npipeline handler event loop. I suppose there will be more issues to fix\nat that point, so maybe this change is OK for now.\n\n>  }\n>  \n>  /* -----------------------------------------------------------------------------\n> diff --git a/src/libcamera/pipeline/uvcvideo.cpp b/src/libcamera/pipeline/uvcvideo.cpp\n> index fae0ffc4de30e1b7..dc17b456af6987e6 100644\n> --- a/src/libcamera/pipeline/uvcvideo.cpp\n> +++ b/src/libcamera/pipeline/uvcvideo.cpp\n> @@ -281,9 +281,7 @@ int PipelineHandlerUVC::queueRequest(Camera *camera, Request *request)\n>  \tif (ret < 0)\n>  \t\treturn ret;\n>  \n> -\tPipelineHandler::queueRequest(camera, request);\n> -\n> -\treturn 0;\n> +\treturn PipelineHandler::queueRequest(camera, request);\n\nI'm slightly annoyed by this. It doesn't break anything, and forwards\nthe error code from PipelineHandler::queueRequest(), which is good\noverall. However, PipelineHandler::queueRequest() never fails in its\ncurrent implementation (which is why the code isn't currently broken),\nand if that were to change, we would need to handle the error here to\nundo the previous actions (which can't really be done, as a buffer\nqueued to a V4L2 device can't be \"unqueued\"). The code is thus a bit\nfragile. I suppose this change doesn't make the situation worse, so we\ncan address the issue later when it arises.\n\nI'm not opposed to this patch, if other developers think it should be\nmerged, in its current form, let's do it.\n\n>  }\n>  \n>  bool PipelineHandlerUVC::match(DeviceEnumerator *enumerator)\n> diff --git a/src/libcamera/pipeline/vimc.cpp b/src/libcamera/pipeline/vimc.cpp\n> index c16ae4cb76b57e1c..5f83ae2b85997828 100644\n> --- a/src/libcamera/pipeline/vimc.cpp\n> +++ b/src/libcamera/pipeline/vimc.cpp\n> @@ -341,9 +341,7 @@ int PipelineHandlerVimc::queueRequest(Camera *camera, Request *request)\n>  \tif (ret < 0)\n>  \t\treturn ret;\n>  \n> -\tPipelineHandler::queueRequest(camera, request);\n> -\n> -\treturn 0;\n> +\treturn PipelineHandler::queueRequest(camera, request);\n>  }\n>  \n>  bool PipelineHandlerVimc::match(DeviceEnumerator *enumerator)","headers":{"Return-Path":"<laurent.pinchart@ideasonboard.com>","Received":["from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 843AE60F1C\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 18 Nov 2019 12:39:17 +0100 (CET)","from pendragon.ideasonboard.com (81-175-216-236.bb.dnainternet.fi\n\t[81.175.216.236])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id E9AB2563;\n\tMon, 18 Nov 2019 12:39:16 +0100 (CET)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1574077157;\n\tbh=ajcNKLwyNPqw+3A8H5Q9iT98eFv0ertnit67MwAnxAw=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=jBI+CCbYCxiYYKaBPwMpgLvsg08xKLhiM8d9a1/Cwo724l4LzEcd2HzH8P2Q4Zn9R\n\tm3S6RLvQgsFA+m2a6sBgpxI8IrVEvSKJz5uPfL4LT39mrujljxsAouqlWnzqrmmKCi\n\tiH4cmk/idmQMOBELX0Z4fBKpEK44JGZQDqBzC2Ts=","Date":"Mon, 18 Nov 2019 13:39:12 +0200","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"Niklas =?utf-8?q?S=C3=B6derlund?= <niklas.soderlund@ragnatech.se>","Cc":"libcamera-devel@lists.libcamera.org","Message-ID":"<20191118113912.GK4724@pendragon.ideasonboard.com>","References":"<20191028022224.795355-1-niklas.soderlund@ragnatech.se>\n\t<20191028022224.795355-9-niklas.soderlund@ragnatech.se>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","Content-Transfer-Encoding":"8bit","In-Reply-To":"<20191028022224.795355-9-niklas.soderlund@ragnatech.se>","User-Agent":"Mutt/1.10.1 (2018-07-13)","Subject":"Re: [libcamera-devel] [PATCH 08/10] libcamera: pipelines: Align\n\twhere to call base class queueRequest()","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","X-List-Received-Date":"Mon, 18 Nov 2019 11:39:17 -0000"}},{"id":3114,"web_url":"https://patchwork.libcamera.org/comment/3114/","msgid":"<20191120014723.GT8072@bigcity.dyn.berto.se>","date":"2019-11-20T01:47:23","subject":"Re: [libcamera-devel] [PATCH 08/10] libcamera: pipelines: Align\n\twhere to call base class queueRequest()","submitter":{"id":5,"url":"https://patchwork.libcamera.org/api/people/5/","name":"Niklas Söderlund","email":"niklas.soderlund@ragnatech.se"},"content":"Hi Jacopo and Laurent,\n\nThanks for your feedback.\n\nOn 2019-11-18 13:39:12 +0200, Laurent Pinchart wrote:\n> Hi Niklas,\n> \n> Thank you for the patch.\n> \n> On Mon, Oct 28, 2019 at 03:22:22AM +0100, Niklas Söderlund wrote:\n> > The PipelineHandler base class queueRequest() where called at different\n> \n> s/where called/is called/ ?\n> \n> > points in different pipeline handlers. Align where they are called to\n> > make it easier to read different pipeline implementations.\n> \n> s/pipeline/pipeline handler/\n> \n> > \n> > Signed-off-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>\n> > ---\n> >  src/libcamera/pipeline/ipu3/ipu3.cpp     | 5 +++--\n> >  src/libcamera/pipeline/rkisp1/rkisp1.cpp | 4 +---\n> >  src/libcamera/pipeline/uvcvideo.cpp      | 4 +---\n> >  src/libcamera/pipeline/vimc.cpp          | 4 +---\n> >  4 files changed, 6 insertions(+), 11 deletions(-)\n> > \n> > diff --git a/src/libcamera/pipeline/ipu3/ipu3.cpp b/src/libcamera/pipeline/ipu3/ipu3.cpp\n> > index 8d3ad568d16e9f8f..06ee6ccac641eb41 100644\n> > --- a/src/libcamera/pipeline/ipu3/ipu3.cpp\n> > +++ b/src/libcamera/pipeline/ipu3/ipu3.cpp\n> > @@ -768,9 +768,10 @@ int PipelineHandlerIPU3::queueRequest(Camera *camera, Request *request)\n> >  \t\t\terror = ret;\n> >  \t}\n> >  \n> > -\tPipelineHandler::queueRequest(camera, request);\n> > +\tif (error)\n> > +\t\treturn error;\n> \n> Should we instead return an error immediately in the above loop instead\n> of continuing ?\n> \n> >  \n> > -\treturn error;\n> > +\treturn PipelineHandler::queueRequest(camera, request);\n> >  }\n> >  \n> >  bool PipelineHandlerIPU3::match(DeviceEnumerator *enumerator)\n> > diff --git a/src/libcamera/pipeline/rkisp1/rkisp1.cpp b/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n> > index 7a28b03b8d38c8b9..a99df4f8b846d8b7 100644\n> > --- a/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n> > +++ b/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n> > @@ -814,8 +814,6 @@ int PipelineHandlerRkISP1::queueRequest(Camera *camera, Request *request)\n> >  \tRkISP1CameraData *data = cameraData(camera);\n> >  \tStream *stream = &data->stream_;\n> >  \n> > -\tPipelineHandler::queueRequest(camera, request);\n> > -\n> >  \tRkISP1FrameInfo *info = data->frameInfo_.create(data->frame_, request,\n> >  \t\t\t\t\t\t\tstream);\n> >  \tif (!info)\n> > @@ -833,7 +831,7 @@ int PipelineHandlerRkISP1::queueRequest(Camera *camera, Request *request)\n> >  \n> >  \tdata->frame_++;\n> >  \n> > -\treturn 0;\n> > +\treturn PipelineHandler::queueRequest(camera, request);\n> \n> What if the request completes before PipelineHandler::queueRequest() is\n> called ? This isn't really a problem today, but may become one later\n> when we'll use threads in pipeline handlers. The queueRequest() method\n> could be called from a thread different than the one running the\n> pipeline handler event loop. I suppose there will be more issues to fix\n> at that point, so maybe this change is OK for now.\n\nGood point, will fix in next version.\n\n> \n> >  }\n> >  \n> >  /* -----------------------------------------------------------------------------\n> > diff --git a/src/libcamera/pipeline/uvcvideo.cpp b/src/libcamera/pipeline/uvcvideo.cpp\n> > index fae0ffc4de30e1b7..dc17b456af6987e6 100644\n> > --- a/src/libcamera/pipeline/uvcvideo.cpp\n> > +++ b/src/libcamera/pipeline/uvcvideo.cpp\n> > @@ -281,9 +281,7 @@ int PipelineHandlerUVC::queueRequest(Camera *camera, Request *request)\n> >  \tif (ret < 0)\n> >  \t\treturn ret;\n> >  \n> > -\tPipelineHandler::queueRequest(camera, request);\n> > -\n> > -\treturn 0;\n> > +\treturn PipelineHandler::queueRequest(camera, request);\n> \n> I'm slightly annoyed by this. It doesn't break anything, and forwards\n> the error code from PipelineHandler::queueRequest(), which is good\n> overall. However, PipelineHandler::queueRequest() never fails in its\n> current implementation (which is why the code isn't currently broken),\n> and if that were to change, we would need to handle the error here to\n> undo the previous actions (which can't really be done, as a buffer\n> queued to a V4L2 device can't be \"unqueued\"). The code is thus a bit\n> fragile. I suppose this change doesn't make the situation worse, so we\n> can address the issue later when it arises.\n\nGood point will fix in v2.\n\n> \n> I'm not opposed to this patch, if other developers think it should be\n> merged, in its current form, let's do it.\n\nThe points above pointed out by both Jacopo and Laurent have made me \nreconsider this patch and take the issue in a new direction. I now \nbelieve the core of the problem to be specific pipeline handler \nimplementations need to call it's base class equivalent in this case.\n\n> \n> >  }\n> >  \n> >  bool PipelineHandlerUVC::match(DeviceEnumerator *enumerator)\n> > diff --git a/src/libcamera/pipeline/vimc.cpp b/src/libcamera/pipeline/vimc.cpp\n> > index c16ae4cb76b57e1c..5f83ae2b85997828 100644\n> > --- a/src/libcamera/pipeline/vimc.cpp\n> > +++ b/src/libcamera/pipeline/vimc.cpp\n> > @@ -341,9 +341,7 @@ int PipelineHandlerVimc::queueRequest(Camera *camera, Request *request)\n> >  \tif (ret < 0)\n> >  \t\treturn ret;\n> >  \n> > -\tPipelineHandler::queueRequest(camera, request);\n> > -\n> > -\treturn 0;\n> > +\treturn PipelineHandler::queueRequest(camera, request);\n> >  }\n> >  \n> >  bool PipelineHandlerVimc::match(DeviceEnumerator *enumerator)\n> \n> -- \n> Regards,\n> \n> Laurent Pinchart","headers":{"Return-Path":"<niklas.soderlund@ragnatech.se>","Received":["from mail-lj1-x241.google.com (mail-lj1-x241.google.com\n\t[IPv6:2a00:1450:4864:20::241])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id C1E0860F1C\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 20 Nov 2019 02:47:25 +0100 (CET)","by mail-lj1-x241.google.com with SMTP id n21so25554591ljg.12\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 19 Nov 2019 17:47:25 -0800 (PST)","from localhost (h-93-159.A463.priv.bahnhof.se. [46.59.93.159])\n\tby smtp.gmail.com with ESMTPSA id\n\tv21sm10740815ljh.53.2019.11.19.17.47.23\n\t(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n\tTue, 19 Nov 2019 17:47:24 -0800 (PST)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=ragnatech-se.20150623.gappssmtp.com; s=20150623;\n\th=date:from:to:cc:subject:message-id:references:mime-version\n\t:content-disposition:content-transfer-encoding:in-reply-to\n\t:user-agent; bh=i8wfkcMq03A8wk0WhyT9prgUKYRNKIbTisXIT7AMvKc=;\n\tb=Fs4Ca7dzWNfWa9+gH554WIsGVgHJtFY8J6RJqnhXP1A2jCipFp/hV5Ts3J6Mg7Fdit\n\tmRwExyJyhYtKmUHTmAWlx7y6JewCX+thcwjudtH6Ou5QRLsDQXeDtDLC30k/02q6HQL7\n\tr2CCgzMFcTSIBMLpzYG0spK0A6maWd+kbH6nwBbNDLrwZ1hvxRylYAs7WksokWo+l3rq\n\tiZErfz9lSrT1L4UHlDioSAREshgg05Iy8UGn6DVtVaauZOePfyzCAM7idgATPjzcuBSg\n\tWQXUEczF5gImPmeSxphNqNrydJyoRxIcI06pW+VcQCEJDCaBGgHo7+N1hRS58ebURqWj\n\txcmg==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:date:from:to:cc:subject:message-id:references\n\t:mime-version:content-disposition:content-transfer-encoding\n\t:in-reply-to:user-agent;\n\tbh=i8wfkcMq03A8wk0WhyT9prgUKYRNKIbTisXIT7AMvKc=;\n\tb=hiE4cG0+EuU79fVwL6Jm+XTCEi54DzVDmzWfGhVallRCpKR+tLL4qm92IS6F43zAHR\n\tjh0SFffU5gh0mLEjo8cQMOnsTMQ1ZfxeFn/x2lejClk2E2vNnIF1KoIIEX2v8X/q9ANQ\n\tSsDPfiX/Oj8tAXUIK2i1vCpzwVPcDGB1xKBTYWcEuFog3M+gKi5PXGa4YLZCipSbKdZh\n\tltBMO+neq+JeHJzJou53zEvaGra/zxpJlGXwDmWDgE0zHVbyuQf0l64yl9hC+5EVyNPY\n\tWGy/l7DzL0WcMVn11F11xkhB1Fl1joRY2Xgrcr05cZEBCgWenvZAqa1J4UBYTzIHbAda\n\t9Drw==","X-Gm-Message-State":"APjAAAVKrEqVd/kxP935luKpYR8+UTVdXP48R5+bOZFvrjw/edShAQ1g\n\tdbga5G8zTyPTlXRhyr1zLI51sA==","X-Google-Smtp-Source":"APXvYqzn3eE1h5Ym8afolQfP7OCNkpp702ZkVA7R/aIi6Ojr26NFdeCtZKY5lB+OdrhMycttYyDXRQ==","X-Received":"by 2002:a2e:3a15:: with SMTP id h21mr343156lja.256.1574214444986;\n\tTue, 19 Nov 2019 17:47:24 -0800 (PST)","Date":"Wed, 20 Nov 2019 02:47:23 +0100","From":"Niklas =?iso-8859-1?q?S=F6derlund?= <niklas.soderlund@ragnatech.se>","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>,\n\tJacopo Mondi <jacopo@jmondi.org>","Cc":"libcamera-devel@lists.libcamera.org","Message-ID":"<20191120014723.GT8072@bigcity.dyn.berto.se>","References":"<20191028022224.795355-1-niklas.soderlund@ragnatech.se>\n\t<20191028022224.795355-9-niklas.soderlund@ragnatech.se>\n\t<20191118113912.GK4724@pendragon.ideasonboard.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=iso-8859-1","Content-Disposition":"inline","Content-Transfer-Encoding":"8bit","In-Reply-To":"<20191118113912.GK4724@pendragon.ideasonboard.com>","User-Agent":"Mutt/1.12.1 (2019-06-15)","Subject":"Re: [libcamera-devel] [PATCH 08/10] libcamera: pipelines: Align\n\twhere to call base class queueRequest()","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","X-List-Received-Date":"Wed, 20 Nov 2019 01:47:26 -0000"}}]