Show a patch.

GET /api/1.1/patches/2106/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 2106,
    "url": "https://patchwork.libcamera.org/api/1.1/patches/2106/?format=api",
    "web_url": "https://patchwork.libcamera.org/patch/2106/",
    "project": {
        "id": 1,
        "url": "https://patchwork.libcamera.org/api/1.1/projects/1/?format=api",
        "name": "libcamera",
        "link_name": "libcamera",
        "list_id": "libcamera_core",
        "list_email": "libcamera-devel@lists.libcamera.org",
        "web_url": "",
        "scm_url": "",
        "webscm_url": ""
    },
    "msgid": "<20191006053226.8976-2-laurent.pinchart@ideasonboard.com>",
    "date": "2019-10-06T05:32:18",
    "name": "[libcamera-devel,1/9] libcamera: timer: Remove the interval() method",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": false,
    "hash": "bf8da860e38c9aa5c627ee04a5990784be477928",
    "submitter": {
        "id": 2,
        "url": "https://patchwork.libcamera.org/api/1.1/people/2/?format=api",
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com"
    },
    "delegate": null,
    "mbox": "https://patchwork.libcamera.org/patch/2106/mbox/",
    "series": [
        {
            "id": 522,
            "url": "https://patchwork.libcamera.org/api/1.1/series/522/?format=api",
            "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=522",
            "date": "2019-10-06T05:32:17",
            "name": "Timer fixes and enhancements",
            "version": 1,
            "mbox": "https://patchwork.libcamera.org/series/522/mbox/"
        }
    ],
    "comments": "https://patchwork.libcamera.org/api/patches/2106/comments/",
    "check": "pending",
    "checks": "https://patchwork.libcamera.org/api/patches/2106/checks/",
    "tags": {},
    "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 3133161967\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tSun,  6 Oct 2019 07:32:35 +0200 (CEST)",
            "from pendragon.ideasonboard.com\n\t(modemcable151.96-160-184.mc.videotron.ca [184.160.96.151])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 1BFC8DD\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tSun,  6 Oct 2019 07:32:33 +0200 (CEST)"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1570339954;\n\tbh=oeyEcRU61jKXvjVuh6cDcmWwY7TFbjFzkCCd2rVasKU=;\n\th=From:To:Subject:Date:In-Reply-To:References:From;\n\tb=VJvzCaHCJomfUKLK1j5yG/6o5t1BuQSJqR9lw5F9if+w/rvHv5UmbFVcXzSdsuysD\n\tTyUa2M4Vjnpw7HnEBR1xCWhJEhrpJ1uoCOyC28JJAWe9oO8Ww0X3/oX5mUChpeN+XK\n\tRFwNqPrvzj/aZ1D3Q6uiA1ffTWsuXNqfGsdy7NhM=",
        "From": "Laurent Pinchart <laurent.pinchart@ideasonboard.com>",
        "To": "libcamera-devel@lists.libcamera.org",
        "Date": "Sun,  6 Oct 2019 08:32:18 +0300",
        "Message-Id": "<20191006053226.8976-2-laurent.pinchart@ideasonboard.com>",
        "X-Mailer": "git-send-email 2.21.0",
        "In-Reply-To": "<20191006053226.8976-1-laurent.pinchart@ideasonboard.com>",
        "References": "<20191006053226.8976-1-laurent.pinchart@ideasonboard.com>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "Subject": "[libcamera-devel] [PATCH 1/9] libcamera: timer: Remove the\n\tinterval() method",
        "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": "Sun, 06 Oct 2019 05:32:35 -0000"
    },
    "content": "The libcamera timers are single-shot timers. They are started with a\nduration, but fire once only, not based on an interval. Remove the\ninterval concept by removing the interval() method, and rename other\noccurences of interval to duration.\n\nSigned-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n---\n include/libcamera/timer.h        |  4 +---\n src/libcamera/timer.cpp          | 19 ++++++-------------\n src/qcam/qt_event_dispatcher.cpp |  7 ++++++-\n 3 files changed, 13 insertions(+), 17 deletions(-)",
    "diff": "diff --git a/include/libcamera/timer.h b/include/libcamera/timer.h\nindex 476ae45f1e53..09f426a59993 100644\n--- a/include/libcamera/timer.h\n+++ b/include/libcamera/timer.h\n@@ -24,11 +24,10 @@ public:\n \t~Timer();\n \n \tvoid start(unsigned int msec) { start(std::chrono::milliseconds(msec)); }\n-\tvoid start(std::chrono::milliseconds interval);\n+\tvoid start(std::chrono::milliseconds duration);\n \tvoid stop();\n \tbool isRunning() const;\n \n-\tstd::chrono::milliseconds interval() const { return interval_; }\n \tstd::chrono::steady_clock::time_point deadline() const { return deadline_; }\n \n \tSignal<Timer *> timeout;\n@@ -40,7 +39,6 @@ private:\n \tvoid registerTimer();\n \tvoid unregisterTimer();\n \n-\tstd::chrono::milliseconds interval_;\n \tstd::chrono::steady_clock::time_point deadline_;\n };\n \ndiff --git a/src/libcamera/timer.cpp b/src/libcamera/timer.cpp\nindex b3cea3dadb49..34410bab0fb0 100644\n--- a/src/libcamera/timer.cpp\n+++ b/src/libcamera/timer.cpp\n@@ -61,19 +61,18 @@ Timer::~Timer()\n  */\n \n /**\n- * \\brief Start or restart the timer with a timeout of \\a interval\n- * \\param[in] interval The timer duration in milliseconds\n+ * \\brief Start or restart the timer with a timeout of \\a duration\n+ * \\param[in] duration The timer duration in milliseconds\n  *\n  * If the timer is already running it will be stopped and restarted.\n  */\n-void Timer::start(std::chrono::milliseconds interval)\n+void Timer::start(std::chrono::milliseconds duration)\n {\n-\tinterval_ = interval;\n-\tdeadline_ = utils::clock::now() + interval;\n+\tdeadline_ = utils::clock::now() + duration;\n \n \tLOG(Timer, Debug)\n-\t\t<< \"Starting timer \" << this << \" with interval \"\n-\t\t<< interval.count() << \": deadline \"\n+\t\t<< \"Starting timer \" << this << \" with duration \"\n+\t\t<< duration.count() << \": deadline \"\n \t\t<< utils::time_point_to_string(deadline_);\n \n \tregisterTimer();\n@@ -113,12 +112,6 @@ bool Timer::isRunning() const\n \treturn deadline_ != utils::time_point();\n }\n \n-/**\n- * \\fn Timer::interval()\n- * \\brief Retrieve the timer interval\n- * \\return The timer interval in milliseconds\n- */\n-\n /**\n  * \\fn Timer::deadline()\n  * \\brief Retrieve the timer deadline\ndiff --git a/src/qcam/qt_event_dispatcher.cpp b/src/qcam/qt_event_dispatcher.cpp\nindex 994af3ead82a..9e989bef7d53 100644\n--- a/src/qcam/qt_event_dispatcher.cpp\n+++ b/src/qcam/qt_event_dispatcher.cpp\n@@ -5,6 +5,7 @@\n  * qt_event_dispatcher.cpp - qcam - Qt-based event dispatcher\n  */\n \n+#include <chrono>\n #include <iostream>\n \n #include <QAbstractEventDispatcher>\n@@ -112,7 +113,11 @@ void QtEventDispatcher::exceptionNotifierActivated(int socket)\n \n void QtEventDispatcher::registerTimer(Timer *timer)\n {\n-\tint timerId = startTimer(timer->interval());\n+\tstd::chrono::steady_clock::time_point now = std::chrono::steady_clock::now();\n+\tstd::chrono::steady_clock::duration duration = timer->deadline() - now;\n+\tstd::chrono::milliseconds msec =\n+\t\tstd::chrono::duration_cast<std::chrono::milliseconds>(duration);\n+\tint timerId = startTimer(msec);\n \ttimers_[timerId] = timer;\n \ttimerIds_[timer] = timerId;\n }\n",
    "prefixes": [
        "libcamera-devel",
        "1/9"
    ]
}