[{"id":16975,"web_url":"https://patchwork.libcamera.org/comment/16975/","msgid":"<CAO5uPHOR7G8G9vN3683cU13msAkL49vYmUWRyHOnbVp7WhD+Cg@mail.gmail.com>","date":"2021-05-17T04:50:48","subject":"Re: [libcamera-devel] [PATCH v2 4/8] android: camera_device:\n\tReplace running_ with CameraState","submitter":{"id":63,"url":"https://patchwork.libcamera.org/api/people/63/","name":"Hirokazu Honda","email":"hiroh@chromium.org"},"content":"Hi Jacopo, thank you for the patch.\n\nOn Thu, May 13, 2021 at 6:22 PM Jacopo Mondi <jacopo@jmondi.org> wrote:\n\n> The CameraDevice class maintains the camera state in the 'running_'\n> boolean flag to check if the camera has to be started at the first\n> received process_capture_request() call which happens after the camera\n> had been stopped.\n>\n> So far this was correct, as the operations that change the camera\n> could only start or stop the camera, so a simple boolean flag\n> was enough.\n>\n> To prepare to handle the flush() operation that will introduce a new\n> 'flushing' state, replace the simple plain boolean flag with an\n> enumeration of values that define the CameraState.\n>\n> Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>\n> Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>\n>\n\nReviewed-by: Hirokazu Honda <hiroh@chromium.org>\n\n\n> ---\n>  src/android/camera_device.cpp | 10 +++++-----\n>  src/android/camera_device.h   |  8 +++++++-\n>  2 files changed, 12 insertions(+), 6 deletions(-)\n>\n> diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp\n> index 383baa60f918..82dd7ce0ee99 100644\n> --- a/src/android/camera_device.cpp\n> +++ b/src/android/camera_device.cpp\n> @@ -402,7 +402,7 @@\n> CameraDevice::Camera3RequestDescriptor::Camera3RequestDescriptor(\n>   */\n>\n>  CameraDevice::CameraDevice(unsigned int id, std::shared_ptr<Camera>\n> camera)\n> -       : id_(id), running_(false), camera_(std::move(camera)),\n> +       : id_(id), state_(CameraStopped), camera_(std::move(camera)),\n>           facing_(CAMERA_FACING_FRONT), orientation_(0)\n>  {\n>         camera_->requestCompleted.connect(this,\n> &CameraDevice::requestComplete);\n> @@ -758,14 +758,14 @@ void CameraDevice::close()\n>\n>  void CameraDevice::stop()\n>  {\n> -       if (!running_)\n> +       if (state_ == CameraStopped)\n>                 return;\n>\n>         worker_.stop();\n>         camera_->stop();\n>\n>         descriptors_.clear();\n> -       running_ = false;\n> +       state_ = CameraStopped;\n>  }\n>\n>  void CameraDevice::setCallbacks(const camera3_callback_ops_t *callbacks)\n> @@ -1915,7 +1915,7 @@ int\n> CameraDevice::processCaptureRequest(camera3_capture_request_t *camera3Reques\n>                 return -EINVAL;\n>\n>         /* Start the camera if that's the first request we handle. */\n> -       if (!running_) {\n> +       if (state_ == CameraStopped) {\n>                 worker_.start();\n>\n>                 int ret = camera_->start();\n> @@ -1924,7 +1924,7 @@ int\n> CameraDevice::processCaptureRequest(camera3_capture_request_t *camera3Reques\n>                         return ret;\n>                 }\n>\n> -               running_ = true;\n> +               state_ = CameraRunning;\n>         }\n>\n>         /*\n> diff --git a/src/android/camera_device.h b/src/android/camera_device.h\n> index 8d5da8bc59e1..30b364decaab 100644\n> --- a/src/android/camera_device.h\n> +++ b/src/android/camera_device.h\n> @@ -88,6 +88,11 @@ private:\n>                 int androidFormat;\n>         };\n>\n> +       enum State {\n> +               CameraStopped,\n> +               CameraRunning,\n> +       };\n> +\n>         void stop();\n>\n>         int initializeStreamConfigurations();\n> @@ -115,7 +120,8 @@ private:\n>\n>         CameraWorker worker_;\n>\n> -       bool running_;\n> +       State state_;\n> +\n>         std::shared_ptr<libcamera::Camera> camera_;\n>         std::unique_ptr<libcamera::CameraConfiguration> config_;\n>\n> --\n> 2.31.1\n>\n> _______________________________________________\n> libcamera-devel mailing list\n> libcamera-devel@lists.libcamera.org\n> https://lists.libcamera.org/listinfo/libcamera-devel\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 72EE1C31FC\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 17 May 2021 04:51:02 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id F1BBA68920;\n\tMon, 17 May 2021 06:51:01 +0200 (CEST)","from mail-ej1-x632.google.com (mail-ej1-x632.google.com\n\t[IPv6:2a00:1450:4864:20::632])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id E1032602B1\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 17 May 2021 06:51:00 +0200 (CEST)","by mail-ej1-x632.google.com with SMTP id n2so7130137ejy.7\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tSun, 16 May 2021 21:51:00 -0700 (PDT)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=chromium.org header.i=@chromium.org\n\theader.b=\"OYpCIzID\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org;\n\ts=google; \n\th=mime-version:references:in-reply-to:from:date:message-id:subject:to\n\t:cc; bh=UErg/QywwuoMs1JRGNTxptEssQeBmVKJ5SM9PxT6Ux0=;\n\tb=OYpCIzIDG7H8AO4/XBuKMlCmLlui1zAqBt8O5AZJ1+T5lRlDVlODLYVUvNovTzAusC\n\tDBDhsJ3g8bI1TjyXk7uayXMFAaqO2oAiLFegO9XWn+jovk3+ibGUpGTRxdOzzAsf1pRp\n\tB9bpeUQx1iNLgymyZQ69cTdi+HjYl+fn3xVsc=","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:mime-version:references:in-reply-to:from:date\n\t:message-id:subject:to:cc;\n\tbh=UErg/QywwuoMs1JRGNTxptEssQeBmVKJ5SM9PxT6Ux0=;\n\tb=t9M1DD4d0nbjnT7Er7FPkmWjhKCTB8ienhktyJMY4VihfiFt5wZIlTCjuZ4Ouyhxra\n\t0uR+KSZA9dUiJq6kADDluvaktxM8R3kOqzWeFgZQF9RGPJPuwNqu8TTzVYXkMnorvOBb\n\tObwKIvzrI/QpBEL8ACeWZ0I95kUG2vbI0BzMdlh1n3bRoryLwWigdrOWkDh+v4Lb2j5u\n\tKHFQgFky5U6PF9U4JLkPqUdcSoLtKlFuhEqqveh0n8vlnpj9PmhJOHdpVQtF+2b8QaLm\n\tlp0LWJ01edu2qjBPTzwlIr1nl1axoXKaHXDdmhFmWP2T6L6n0xTJ/2q2W18U2TIzRBya\n\tUiaA==","X-Gm-Message-State":"AOAM5323Mm9jz2Qwq6G7joL+UVhemz5JsOyi33+hAdI6c23Ygvap5M5u\n\tJ22LCYH/dLU+vIDF0sE+0uHu61NeoGdBHe1v6Ex7dqRVa2s=","X-Google-Smtp-Source":"ABdhPJwO6mogvGUj2+689WDuw+WvbQBH8SR0S2Rsmef3IxrWyYdlOygyUNKoG1qkhyaPFm7axWlBerir2ZNRO7DuQOM=","X-Received":"by 2002:a17:906:ecf9:: with SMTP id\n\tqt25mr6644193ejb.55.1621227060661; \n\tSun, 16 May 2021 21:51:00 -0700 (PDT)","MIME-Version":"1.0","References":"<20210513092246.42847-1-jacopo@jmondi.org>\n\t<20210513092246.42847-5-jacopo@jmondi.org>","In-Reply-To":"<20210513092246.42847-5-jacopo@jmondi.org>","From":"Hirokazu Honda <hiroh@chromium.org>","Date":"Mon, 17 May 2021 13:50:48 +0900","Message-ID":"<CAO5uPHOR7G8G9vN3683cU13msAkL49vYmUWRyHOnbVp7WhD+Cg@mail.gmail.com>","To":"Jacopo Mondi <jacopo@jmondi.org>","Content-Type":"multipart/alternative; boundary=\"0000000000000d201a05c27f57c7\"","Subject":"Re: [libcamera-devel] [PATCH v2 4/8] android: camera_device:\n\tReplace running_ with CameraState","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>","Cc":"libcamera-devel@lists.libcamera.org","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}}]