[{"id":23161,"web_url":"https://patchwork.libcamera.org/comment/23161/","msgid":"<Yo+cW3AzlBtn7j91@pendragon.ideasonboard.com>","date":"2022-05-26T15:27:23","subject":"Re: [libcamera-devel] [PATCH v2 06/19] py: Add\n\tCameraManager.read_event()","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"Hi Tomi,\n\nThank you for the patch.\n\nOn Tue, May 24, 2022 at 02:45:57PM +0300, Tomi Valkeinen wrote:\n> Add CameraManager.read_event() so that the user does not need to call\n> os.read().\n> \n> We use eventfd, and we must always read 8 bytes. Hiding that inside\n> read_event() makes sense.\n> \n> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>\n> ---\n>  src/py/cam/cam.py            | 3 +--\n>  src/py/libcamera/py_main.cpp | 8 ++++++++\n>  test/py/unittests.py         | 3 +--\n>  3 files changed, 10 insertions(+), 4 deletions(-)\n> \n> diff --git a/src/py/cam/cam.py b/src/py/cam/cam.py\n> index e2bc78da..66df18bf 100755\n> --- a/src/py/cam/cam.py\n> +++ b/src/py/cam/cam.py\n> @@ -9,7 +9,6 @@\n>  import argparse\n>  import binascii\n>  import libcamera as libcam\n> -import os\n>  import sys\n>  import traceback\n>  \n> @@ -294,7 +293,7 @@ def event_handler(state):\n>          cm = state['cm']\n>          contexts = state['contexts']\n>  \n> -        os.read(cm.efd, 8)\n> +        cm.read_event()\n>  \n>          reqs = cm.get_ready_requests()\n\nWould it make sense to read the event within get_ready_requests() ?\n\n>  \n> diff --git a/src/py/libcamera/py_main.cpp b/src/py/libcamera/py_main.cpp\n> index e7066841..5d389942 100644\n> --- a/src/py/libcamera/py_main.cpp\n> +++ b/src/py/libcamera/py_main.cpp\n> @@ -212,6 +212,14 @@ PYBIND11_MODULE(_libcamera, m)\n>  \t\t\treturn gEventfd;\n>  \t\t})\n>  \n> +\t\t.def(\"read_event\", [](CameraManager &) {\n> +\t\t\tuint8_t buf[8];\n> +\n> +\t\t\tint ret = read(gEventfd, buf, 8);\n> +\t\t\tif (ret != 8)\n> +\t\t\t\tthrow std::system_error(errno, std::generic_category());\n> +\t\t})\n> +\n>  \t\t.def(\"get_ready_requests\", [](CameraManager &) {\n>  \t\t\tstd::vector<Request *> v;\n>  \n> diff --git a/test/py/unittests.py b/test/py/unittests.py\n> index 7dede33b..8c445bc9 100755\n> --- a/test/py/unittests.py\n> +++ b/test/py/unittests.py\n> @@ -7,7 +7,6 @@ from collections import defaultdict\n>  import errno\n>  import gc\n>  import libcamera as libcam\n> -import os\n>  import selectors\n>  import time\n>  import typing\n> @@ -278,7 +277,7 @@ class SimpleCaptureMethods(CameraTesterBase):\n>          while running:\n>              events = sel.select()\n>              for key, _ in events:\n> -                os.read(key.fd, 8)\n> +                cm.read_event()\n>  \n>                  ready_reqs = cm.get_ready_requests()\n>","headers":{"Return-Path":"<libcamera-devel-bounces@lists.libcamera.org>","X-Original-To":"parsemail@patchwork.libcamera.org","Delivered-To":"parsemail@patchwork.libcamera.org","Received":["from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id 3FA38BD161\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 26 May 2022 15:27:32 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id E7D68611BF;\n\tThu, 26 May 2022 17:27:31 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id D66E860DB0\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 26 May 2022 17:27:29 +0200 (CEST)","from pendragon.ideasonboard.com (unknown [37.120.212.14])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 3D2DC32A;\n\tThu, 26 May 2022 17:27:29 +0200 (CEST)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1653578851;\n\tbh=1pY8mR5pSlkVETwI22lYds41J12wywJh1XdFWPiISt0=;\n\th=Date:To:References:In-Reply-To:Subject:List-Id:List-Unsubscribe:\n\tList-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc:\n\tFrom;\n\tb=XuqAPn3Hg/1H2nQGTvWj96ESskAKMqmQVl+r/hqAJWoQmFx91/O5F08U8nEUp/m95\n\tKLzX/zrejEpQY2pc/LoF58tu86wdFADBP671+QNwklaYgtuxBoIEPMV6Gj2KpLT2yS\n\tCyrZGOWkSMiYjUSCYPCiPoYabtKNOhagtAdSvb0xyltste4FXnqVpuG1hdJafatEJN\n\t1JOr5SAWD65dnDKd+PMvb/7OQTmXie3Dx4ynOIAgJEGM/SWIpvUUk/x69+49WsKYlJ\n\tuQE//bcd+LdiIda2re0FpVJ5+7c2iMlHhpoFecCofFERzXjk/tHwhjs8Dekht2zulX\n\tNXKeXueKjUlGA==","v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1653578849;\n\tbh=1pY8mR5pSlkVETwI22lYds41J12wywJh1XdFWPiISt0=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=Q2wkVMMTza/OLXmRliUE/VYxNskBRLl6XK/ecAuBj28hGuDTH03id6EZ8+JhazsT3\n\tdygN8eE2f/vzKvD3GuARB5XD8/qSdJ31+p5WCjz1N78Ea7/5We+KfeyaIVAbULzDg8\n\t3A1fps4MkF5hL2EG/BWqUtUPOnULBDRAM8cmH06w="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key; \n\tunprotected) header.d=ideasonboard.com\n\theader.i=@ideasonboard.com\n\theader.b=\"Q2wkVMMT\"; dkim-atps=neutral","Date":"Thu, 26 May 2022 18:27:23 +0300","To":"Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>","Message-ID":"<Yo+cW3AzlBtn7j91@pendragon.ideasonboard.com>","References":"<20220524114610.41848-1-tomi.valkeinen@ideasonboard.com>\n\t<20220524114610.41848-7-tomi.valkeinen@ideasonboard.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<20220524114610.41848-7-tomi.valkeinen@ideasonboard.com>","Subject":"Re: [libcamera-devel] [PATCH v2 06/19] py: Add\n\tCameraManager.read_event()","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>","From":"Laurent Pinchart via libcamera-devel\n\t<libcamera-devel@lists.libcamera.org>","Reply-To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","Cc":"libcamera-devel@lists.libcamera.org","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":23173,"web_url":"https://patchwork.libcamera.org/comment/23173/","msgid":"<667771da-d5ac-a82e-0484-a652a9dfcfb9@ideasonboard.com>","date":"2022-05-27T06:00:44","subject":"Re: [libcamera-devel] [PATCH v2 06/19] py: Add\n\tCameraManager.read_event()","submitter":{"id":109,"url":"https://patchwork.libcamera.org/api/people/109/","name":"Tomi Valkeinen","email":"tomi.valkeinen@ideasonboard.com"},"content":"On 26/05/2022 18:27, Laurent Pinchart wrote:\n> Hi Tomi,\n> \n> Thank you for the patch.\n> \n> On Tue, May 24, 2022 at 02:45:57PM +0300, Tomi Valkeinen wrote:\n>> Add CameraManager.read_event() so that the user does not need to call\n>> os.read().\n>>\n>> We use eventfd, and we must always read 8 bytes. Hiding that inside\n>> read_event() makes sense.\n>>\n>> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>\n>> ---\n>>   src/py/cam/cam.py            | 3 +--\n>>   src/py/libcamera/py_main.cpp | 8 ++++++++\n>>   test/py/unittests.py         | 3 +--\n>>   3 files changed, 10 insertions(+), 4 deletions(-)\n>>\n>> diff --git a/src/py/cam/cam.py b/src/py/cam/cam.py\n>> index e2bc78da..66df18bf 100755\n>> --- a/src/py/cam/cam.py\n>> +++ b/src/py/cam/cam.py\n>> @@ -9,7 +9,6 @@\n>>   import argparse\n>>   import binascii\n>>   import libcamera as libcam\n>> -import os\n>>   import sys\n>>   import traceback\n>>   \n>> @@ -294,7 +293,7 @@ def event_handler(state):\n>>           cm = state['cm']\n>>           contexts = state['contexts']\n>>   \n>> -        os.read(cm.efd, 8)\n>> +        cm.read_event()\n>>   \n>>           reqs = cm.get_ready_requests()\n> \n> Would it make sense to read the event within get_ready_requests() ?\n\nI thought about these two functions, but this seemed the safest to me. \nIf get_ready_requests() would do read_event(), then you could not call \nget_ready_requests() unless you knew there is an event waiting, or it \nwould block. Or we could make the fd non-blocking, but I think that's \nusually the choice of the user, not the library.\n\n  Tomi","headers":{"Return-Path":"<libcamera-devel-bounces@lists.libcamera.org>","X-Original-To":"parsemail@patchwork.libcamera.org","Delivered-To":"parsemail@patchwork.libcamera.org","Received":["from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id ABA44BD161\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 27 May 2022 06:00:49 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 0D894633A1;\n\tFri, 27 May 2022 08:00:49 +0200 (CEST)","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 F318F61FB6\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 27 May 2022 08:00:47 +0200 (CEST)","from [192.168.1.111] (91-156-85-209.elisa-laajakaista.fi\n\t[91.156.85.209])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 26AEE31A;\n\tFri, 27 May 2022 08:00:47 +0200 (CEST)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1653631249;\n\tbh=5qcCYiZv6cknyddpb53fJnUkVJmA1HbQKhs96NtivEg=;\n\th=Date:To:References:In-Reply-To:Subject:List-Id:List-Unsubscribe:\n\tList-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc:\n\tFrom;\n\tb=FDiXceQ4Pysa1PHgufie2eBb68hz9DWot6bRm9mcWf10BgTxbON7nZQ8W+s9gfgUh\n\tgEDSKAtJFSSXkeXXaUiNROBc0IRyEU9Z6H8S+or4nqByPGffr00RNYgXLojFZB2X3c\n\t5+Q2zJGIlEv5hpKMsjVM7QoBcVTLtrAu5xVyONk616sm+Qu4oIqMkGCId22tfk/dad\n\tJKUC0yUCaWoaGB3FCpSO7f/mpn8N4K0c7jve0sh+2D6KYpT01EQIe+90vKtcrOO9vz\n\tVDxdK3LC78SZ394BQntiNOUgDG33MJPOROZxZbfoIk5zW+Qg+jkBV5exyWOXCpX8+6\n\tGa+LUlU1M91Ng==","v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1653631247;\n\tbh=5qcCYiZv6cknyddpb53fJnUkVJmA1HbQKhs96NtivEg=;\n\th=Date:Subject:To:Cc:References:From:In-Reply-To:From;\n\tb=SU3ND34MW+0ODvTk+evqZgP87uxfbV1aYSq7ljopNOJfMMFLrw5O/3FApXjWCo8B2\n\t3Lr0ruZsDQ/3eybOcs0snMNg2lzrQIsJbPna/mMga6KBqdRjVPH7zSkhp8dSgsT/U1\n\t7zD91BbF4HEnALQl8tqZbzOqlnVB8Yr5qEPS1Yrg="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key; \n\tunprotected) header.d=ideasonboard.com\n\theader.i=@ideasonboard.com\n\theader.b=\"SU3ND34M\"; dkim-atps=neutral","Message-ID":"<667771da-d5ac-a82e-0484-a652a9dfcfb9@ideasonboard.com>","Date":"Fri, 27 May 2022 09:00:44 +0300","MIME-Version":"1.0","User-Agent":"Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101\n\tThunderbird/91.9.1","Content-Language":"en-US","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","References":"<20220524114610.41848-1-tomi.valkeinen@ideasonboard.com>\n\t<20220524114610.41848-7-tomi.valkeinen@ideasonboard.com>\n\t<Yo+cW3AzlBtn7j91@pendragon.ideasonboard.com>","In-Reply-To":"<Yo+cW3AzlBtn7j91@pendragon.ideasonboard.com>","Content-Type":"text/plain; charset=UTF-8; format=flowed","Content-Transfer-Encoding":"7bit","Subject":"Re: [libcamera-devel] [PATCH v2 06/19] py: Add\n\tCameraManager.read_event()","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>","From":"Tomi Valkeinen via libcamera-devel\n\t<libcamera-devel@lists.libcamera.org>","Reply-To":"Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>","Cc":"libcamera-devel@lists.libcamera.org","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":23195,"web_url":"https://patchwork.libcamera.org/comment/23195/","msgid":"<YpCwRukHxLpgeKDU@pendragon.ideasonboard.com>","date":"2022-05-27T11:04:38","subject":"Re: [libcamera-devel] [PATCH v2 06/19] py: Add\n\tCameraManager.read_event()","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"Hi Tomi,\n\nOn Fri, May 27, 2022 at 09:00:44AM +0300, Tomi Valkeinen wrote:\n> On 26/05/2022 18:27, Laurent Pinchart wrote:\n> > On Tue, May 24, 2022 at 02:45:57PM +0300, Tomi Valkeinen wrote:\n> >> Add CameraManager.read_event() so that the user does not need to call\n> >> os.read().\n> >>\n> >> We use eventfd, and we must always read 8 bytes. Hiding that inside\n> >> read_event() makes sense.\n> >>\n> >> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>\n> >> ---\n> >>   src/py/cam/cam.py            | 3 +--\n> >>   src/py/libcamera/py_main.cpp | 8 ++++++++\n> >>   test/py/unittests.py         | 3 +--\n> >>   3 files changed, 10 insertions(+), 4 deletions(-)\n> >>\n> >> diff --git a/src/py/cam/cam.py b/src/py/cam/cam.py\n> >> index e2bc78da..66df18bf 100755\n> >> --- a/src/py/cam/cam.py\n> >> +++ b/src/py/cam/cam.py\n> >> @@ -9,7 +9,6 @@\n> >>   import argparse\n> >>   import binascii\n> >>   import libcamera as libcam\n> >> -import os\n> >>   import sys\n> >>   import traceback\n> >>   \n> >> @@ -294,7 +293,7 @@ def event_handler(state):\n> >>           cm = state['cm']\n> >>           contexts = state['contexts']\n> >>   \n> >> -        os.read(cm.efd, 8)\n> >> +        cm.read_event()\n> >>   \n> >>           reqs = cm.get_ready_requests()\n> > \n> > Would it make sense to read the event within get_ready_requests() ?\n> \n> I thought about these two functions, but this seemed the safest to me. \n> If get_ready_requests() would do read_event(), then you could not call \n> get_ready_requests() unless you knew there is an event waiting, or it \n> would block. Or we could make the fd non-blocking, but I think that's \n> usually the choice of the user, not the library.\n\nHmmm... I have a feeling we can do better, but I don't know what yet :-)\nIt doesn't have to be done now.","headers":{"Return-Path":"<libcamera-devel-bounces@lists.libcamera.org>","X-Original-To":"parsemail@patchwork.libcamera.org","Delivered-To":"parsemail@patchwork.libcamera.org","Received":["from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id 8C3AABD161\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 27 May 2022 11:05:09 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 40182633A5;\n\tFri, 27 May 2022 13:05:09 +0200 (CEST)","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 D1524633A2\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 27 May 2022 13:05:07 +0200 (CEST)","from pendragon.ideasonboard.com (unknown [46.183.103.8])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id CC77631A;\n\tFri, 27 May 2022 13:05:02 +0200 (CEST)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1653649509;\n\tbh=9/Nz93PeMhSPssotV8EGiKBBnrN71w/0YieQ5Cd6pKg=;\n\th=Date:To:References:In-Reply-To:Subject:List-Id:List-Unsubscribe:\n\tList-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc:\n\tFrom;\n\tb=sIdGxRC7RUCz3x/sUm6S+ZXMpxhIwjQ5fhDczyvlw0PselVOWwg/WFRghwrfUGYJe\n\tEE98SoECwwTd6yQ2Y7f9SExM0WqJ29Dv7EBQzhPa7PgDXo8M/iMLevzKHqYyPfEAD7\n\tK8DGVpJpiweW2uApjJMAEPdSGEAbjswPtEil8BuJkV3BewJkdjWbrX5BUSDEWG3ou8\n\tEjYCF8D2iuoec94fXSNW3u4tbofwnj5VMo4NoeSnebffQocn6IGEJZwqplW1jx71KW\n\tDNt72HFYugCorLZ/NZiPckuKGAWm1Y5eIvGREKyxEHcVOZ28UAOz9MwlypWBGNrFKz\n\tSq4Y9Cu4F9jZw==","v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1653649507;\n\tbh=9/Nz93PeMhSPssotV8EGiKBBnrN71w/0YieQ5Cd6pKg=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=uWPQ1AoLCRo3LJtYYbaOYzcYVMYLZgxRHc38F4XQPzuqks/iX/tjW3qEBeGrqf1B1\n\tp/jWO1XMbGP8wLHMcm62mN6LP6DvRsLWIfEQt3Y5dI0fB0OmQAlFBIcTHjSunUUtgZ\n\tvpIPpnRHZ6w5IhXOU53XXvKXCE4t2JJImAkmwxUA="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key; \n\tunprotected) header.d=ideasonboard.com\n\theader.i=@ideasonboard.com\n\theader.b=\"uWPQ1AoL\"; dkim-atps=neutral","Date":"Fri, 27 May 2022 14:04:38 +0300","To":"Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>","Message-ID":"<YpCwRukHxLpgeKDU@pendragon.ideasonboard.com>","References":"<20220524114610.41848-1-tomi.valkeinen@ideasonboard.com>\n\t<20220524114610.41848-7-tomi.valkeinen@ideasonboard.com>\n\t<Yo+cW3AzlBtn7j91@pendragon.ideasonboard.com>\n\t<667771da-d5ac-a82e-0484-a652a9dfcfb9@ideasonboard.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<667771da-d5ac-a82e-0484-a652a9dfcfb9@ideasonboard.com>","Subject":"Re: [libcamera-devel] [PATCH v2 06/19] py: Add\n\tCameraManager.read_event()","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>","From":"Laurent Pinchart via libcamera-devel\n\t<libcamera-devel@lists.libcamera.org>","Reply-To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","Cc":"libcamera-devel@lists.libcamera.org","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}}]