{"id":25688,"url":"https://patchwork.libcamera.org/api/1.1/patches/25688/?format=json","web_url":"https://patchwork.libcamera.org/patch/25688/","project":{"id":1,"url":"https://patchwork.libcamera.org/api/1.1/projects/1/?format=json","name":"libcamera","link_name":"libcamera","list_id":"libcamera_core","list_email":"libcamera-devel@lists.libcamera.org","web_url":"","scm_url":"","webscm_url":""},"msgid":"<20260107195537.2180637-1-barnabas.pocze@ideasonboard.com>","date":"2026-01-07T19:55:37","name":"[v1] libcamera: base: event_dispatcher_poll: Dispatch `POLLPRI` first","commit_ref":null,"pull_url":null,"state":"accepted","archived":false,"hash":"34424a11d171702f12c51ac348f9a28bfc36f333","submitter":{"id":216,"url":"https://patchwork.libcamera.org/api/1.1/people/216/?format=json","name":"Barnabás Pőcze","email":"barnabas.pocze@ideasonboard.com"},"delegate":null,"mbox":"https://patchwork.libcamera.org/patch/25688/mbox/","series":[{"id":5695,"url":"https://patchwork.libcamera.org/api/1.1/series/5695/?format=json","web_url":"https://patchwork.libcamera.org/project/libcamera/list/?series=5695","date":"2026-01-07T19:55:37","name":"[v1] libcamera: base: event_dispatcher_poll: Dispatch `POLLPRI` first","version":1,"mbox":"https://patchwork.libcamera.org/series/5695/mbox/"}],"comments":"https://patchwork.libcamera.org/api/patches/25688/comments/","check":"pending","checks":"https://patchwork.libcamera.org/api/patches/25688/checks/","tags":{},"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 3C0E1BE08B\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed,  7 Jan 2026 19:55:44 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 8AEBE61FC1;\n\tWed,  7 Jan 2026 20:55:43 +0100 (CET)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 8803961F84\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed,  7 Jan 2026 20:55:41 +0100 (CET)","from pb-laptop.local (185.221.143.114.nat.pool.zt.hu\n\t[185.221.143.114])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 65591593;\n\tWed,  7 Jan 2026 20:55:19 +0100 (CET)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"tinc+Geq\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1767815719;\n\tbh=yQ1gY7e5zWz5sEJukYfQHDU1ZcmG25A/BwUdzfy2BJU=;\n\th=From:To:Cc:Subject:Date:From;\n\tb=tinc+GeqZ06hzbZLChOhngkr06XM2AEX/kEj7U3zKqp3mOiXOeuvFZHYn9FAeAJqc\n\tAvSG1rcIRHQ+pa+3xOL1B+kSleY1mJ3gualr6nfX0dxB+4mK2VkVVGP5dOcPGtquWr\n\tEDQaDiAYKhS6IA6SMuCVs2WLFp2xn3mTToF/Lz4o=","From":"=?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= <barnabas.pocze@ideasonboard.com>","To":"libcamera-devel@lists.libcamera.org","Cc":"Naushir Patuck <naush@raspberrypi.com>,\n\tDavid Plowman <david.plowman@raspberrypi.com>","Subject":"[PATCH v1] libcamera: base: event_dispatcher_poll: Dispatch\n\t`POLLPRI` first","Date":"Wed,  7 Jan 2026 20:55:37 +0100","Message-ID":"<20260107195537.2180637-1-barnabas.pocze@ideasonboard.com>","X-Mailer":"git-send-email 2.52.0","MIME-Version":"1.0","Content-Type":"text/plain; charset=UTF-8","Content-Transfer-Encoding":"8bit","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>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"},"content":"When `poll()` returns multiple events for a given file descriptor, it is better\nto service priority events first. So dispatch those first, and not last.\n\nFor example, a v4l2 capture device might be a source of v4l2 events (e.g. frame\nstart) as well as a source of dequeue-able buffers. In such cases, given the\nappropriate scheduling, it is possible with the current event dispatch order\nthat dequeueing the buffer happens before processing the corresponding frame\nstart event. Such occurrence will most likely trip up any internal state machine.\n\nThe above is suspected to contribute to [0], however, that is not confirmed.\n\n[0]: https://gitlab.freedesktop.org/camera/libcamera/-/issues/267\n\nSigned-off-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com>\n---\n src/libcamera/base/event_dispatcher_poll.cpp | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)","diff":"diff --git a/src/libcamera/base/event_dispatcher_poll.cpp b/src/libcamera/base/event_dispatcher_poll.cpp\nindex 52bfb34e2..006e223f8 100644\n--- a/src/libcamera/base/event_dispatcher_poll.cpp\n+++ b/src/libcamera/base/event_dispatcher_poll.cpp\n@@ -244,9 +244,9 @@ void EventDispatcherPoll::processNotifiers(const std::vector<struct pollfd> &pol\n \t\tEventNotifier::Type type;\n \t\tshort events;\n \t} events[] = {\n+\t\t{ EventNotifier::Exception, POLLPRI },\n \t\t{ EventNotifier::Read, POLLIN },\n \t\t{ EventNotifier::Write, POLLOUT },\n-\t\t{ EventNotifier::Exception, POLLPRI },\n \t};\n \n \tprocessingEvents_ = true;\n","prefixes":["v1"]}