Patch Detail
Show a patch.
GET /api/1.1/patches/22999/?format=api
{ "id": 22999, "url": "https://patchwork.libcamera.org/api/1.1/patches/22999/?format=api", "web_url": "https://patchwork.libcamera.org/patch/22999/", "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": "<20250320205105.195858-1-mzamazal@redhat.com>", "date": "2025-03-20T20:51:05", "name": "apps: cam: Skip devices without connectors", "commit_ref": null, "pull_url": null, "state": "superseded", "archived": false, "hash": "7819b00a804993b5892f570f1a2a5aed03483367", "submitter": { "id": 177, "url": "https://patchwork.libcamera.org/api/1.1/people/177/?format=api", "name": "Milan Zamazal", "email": "mzamazal@redhat.com" }, "delegate": null, "mbox": "https://patchwork.libcamera.org/patch/22999/mbox/", "series": [ { "id": 5075, "url": "https://patchwork.libcamera.org/api/1.1/series/5075/?format=api", "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=5075", "date": "2025-03-20T20:51:05", "name": "apps: cam: Skip devices without connectors", "version": 1, "mbox": "https://patchwork.libcamera.org/series/5075/mbox/" } ], "comments": "https://patchwork.libcamera.org/api/patches/22999/comments/", "check": "pending", "checks": "https://patchwork.libcamera.org/api/patches/22999/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 1B40BBD7D8\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 20 Mar 2025 20:51:17 +0000 (UTC)", "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 100B868950;\n\tThu, 20 Mar 2025 21:51:16 +0100 (CET)", "from us-smtp-delivery-124.mimecast.com\n\t(us-smtp-delivery-124.mimecast.com [170.10.133.124])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 61F26617F5\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 20 Mar 2025 21:51:14 +0100 (CET)", "from mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com\n\t(ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97])\n\tby relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,\n\tcipher=TLS_AES_256_GCM_SHA384) id us-mta-590-ZySf7tN2M9ChlUWy2NZreQ-1;\n\tThu, 20 Mar 2025 16:51:11 -0400", "from mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com\n\t(mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com\n\t[10.30.177.93])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\tkey-exchange X25519 server-signature RSA-PSS (2048 bits)\n\tserver-digest SHA256) (No client certificate requested)\n\tby mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix)\n\twith ESMTPS id D5D9C180AB1C; Thu, 20 Mar 2025 20:51:10 +0000 (UTC)", "from mzamazal-thinkpadp1gen7.tpbc.com (unknown [10.44.32.102])\n\tby mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix)\n\twith ESMTP id 280041800370; Thu, 20 Mar 2025 20:51:08 +0000 (UTC)" ], "Authentication-Results": "lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=redhat.com header.i=@redhat.com\n\theader.b=\"SZDF0udn\"; dkim-atps=neutral", "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n\ts=mimecast20190719; t=1742503873;\n\th=from:from:reply-to:subject:subject:date:date:message-id:message-id:\n\tto:to:cc:cc:mime-version:mime-version:content-type:content-type:\n\tcontent-transfer-encoding:content-transfer-encoding;\n\tbh=C/C5to5S8pndlB/pdV6NX48+4KJao2rqaAn7Quzx0Uc=;\n\tb=SZDF0udnqsjqlRCOhPTm11/tYaDNux85w/Jpza7uMGVsSyDXKdPjucK2/xnHWWEOWiZ6Ax\n\tjEcaMBsq9Nc1XT93tISkB0n40gzhD5aILuxJ3cya5fNlGONTqfZzLVPHzJ77Q0d8iy3lYM\n\tMgtqkL6yE+Emfp7AySqP0QdZNyjOjZc=", "X-MC-Unique": "ZySf7tN2M9ChlUWy2NZreQ-1", "X-Mimecast-MFC-AGG-ID": "ZySf7tN2M9ChlUWy2NZreQ_1742503871", "From": "Milan Zamazal <mzamazal@redhat.com>", "To": "libcamera-devel@lists.libcamera.org", "Cc": "Milan Zamazal <mzamazal@redhat.com>,\n\tLaurent Pinchart <laurent.pinchart@ideasonboard.com>", "Subject": "[PATCH] apps: cam: Skip devices without connectors", "Date": "Thu, 20 Mar 2025 21:51:05 +0100", "Message-ID": "<20250320205105.195858-1-mzamazal@redhat.com>", "MIME-Version": "1.0", "X-Scanned-By": "MIMEDefang 3.4.1 on 10.30.177.93", "X-Mimecast-Spam-Score": "0", "X-Mimecast-MFC-PROC-ID": "0DB6NzJ6O7jKye3HEVwgyM9EOZ49TgmckwUZvDCY-SE_1742503871", "X-Mimecast-Originator": "redhat.com", "Content-Transfer-Encoding": "8bit", "content-type": "text/plain; charset=\"US-ASCII\"; x-default=true", "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": "Device::openCard() in the cam DRM helpers looks for a /dev/dri/card*\ndevice that can be opened and that doesn't fail when asked about\nDRM_CAP_DUMB_BUFFER capability (regardless whether the capability is\nsupported by the device).\n\nThere can be matching devices that are not display devices. This can\nlead to selection of such a device and inability to use KMS output with\n`cam' application. The ultimate goal is to display something on the\ndevice and later the KMS sink will fail if there is no connector\nattached to the device (although it can actually fail earlier, when\ntrying to set DRM_CLIENT_CAP_ATOMIC capability if this is not\nsupported). Let's avoid selecting devices without connectors.\n\nA question is whether the added check makes the check for\nDRM_CAP_DUMB_BUFFER API redundant or not.\n\nSigned-off-by: Milan Zamazal <mzamazal@redhat.com>\n---\n src/apps/cam/drm.cpp | 12 ++++++++++++\n 1 file changed, 12 insertions(+)", "diff": "diff --git a/src/apps/cam/drm.cpp b/src/apps/cam/drm.cpp\nindex 47bbb6b0..e19e848c 100644\n--- a/src/apps/cam/drm.cpp\n+++ b/src/apps/cam/drm.cpp\n@@ -479,6 +479,18 @@ int Device::openCard()\n \t\t\tcontinue;\n \t\t}\n \n+\t\t/* Skip devices without connectors. */\n+\t\tstd::unique_ptr<drmModeRes, decltype(&drmModeFreeResources)> resources{\n+\t\t\tdrmModeGetResources(fd_),\n+\t\t\t&drmModeFreeResources\n+\t\t};\n+\t\tif (!resources || resources->count_connectors <= 0) {\n+\t\t\tresources.reset();\n+\t\t\tdrmClose(fd_);\n+\t\t\tfd_ = -1;\n+\t\t\tcontinue;\n+\t\t}\n+\n \t\tfound = true;\n \t\tbreak;\n \t}\n", "prefixes": [] }