From patchwork Sun Dec 7 20:16:14 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Glass X-Patchwork-Id: 829 Return-Path: X-Original-To: u-boot-concept@u-boot.org Delivered-To: u-boot-concept@u-boot.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=u-boot.org; s=default; t=1765138678; bh=tOWH1+Icg+/eVMTEV5TeYgAK7Aw/IHUMAVH3CYcYCJ8=; h=From:To:Date:In-Reply-To:References:CC:Subject:List-Id: List-Archive:List-Help:List-Owner:List-Post:List-Subscribe: List-Unsubscribe:From; b=MSEAYGOlA/kMSYK0Lnn3ZScVMN4uxt701jRD2uhP2vw/MeAgI4NbCn2mpa5E2NcZa E1wLd7DBfMk9IyHo5zO4QGC4LOnGEA06fImzJaIaJHHJ7RR/qO4fgLkAoGVgKCswqK WrRXjfatMz3AM9NgdCNqduqHjum2vTeJQuODawe10ErvavDbUr7zjhthTqBPqubaSU +Iki/0OzBTJcMAVSvXsi775BnqYx54+6M5aedMbCxlOgFyRCSY87RkGjjhI21tmkjj RlxqJorqZjd4s10F4n8AzmorFVZ6ipPT02x3AoVrCv2DJFwnj35lyQR6H1c1yKPj6x 37Xg0T1W6qAzw== Received: from localhost (localhost [127.0.0.1]) by mail.u-boot.org (Postfix) with ESMTP id 32EE7689B1 for ; Sun, 7 Dec 2025 13:17:58 -0700 (MST) X-Virus-Scanned: Debian amavis at Received: from mail.u-boot.org ([127.0.0.1]) by localhost (mail.u-boot.org [127.0.0.1]) (amavis, port 10024) with ESMTP id HaS73Y8Q6gvt for ; Sun, 7 Dec 2025 13:17:58 -0700 (MST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=u-boot.org; s=default; t=1765138678; bh=tOWH1+Icg+/eVMTEV5TeYgAK7Aw/IHUMAVH3CYcYCJ8=; h=From:To:Date:In-Reply-To:References:CC:Subject:List-Id: List-Archive:List-Help:List-Owner:List-Post:List-Subscribe: List-Unsubscribe:From; b=MSEAYGOlA/kMSYK0Lnn3ZScVMN4uxt701jRD2uhP2vw/MeAgI4NbCn2mpa5E2NcZa E1wLd7DBfMk9IyHo5zO4QGC4LOnGEA06fImzJaIaJHHJ7RR/qO4fgLkAoGVgKCswqK WrRXjfatMz3AM9NgdCNqduqHjum2vTeJQuODawe10ErvavDbUr7zjhthTqBPqubaSU +Iki/0OzBTJcMAVSvXsi775BnqYx54+6M5aedMbCxlOgFyRCSY87RkGjjhI21tmkjj RlxqJorqZjd4s10F4n8AzmorFVZ6ipPT02x3AoVrCv2DJFwnj35lyQR6H1c1yKPj6x 37Xg0T1W6qAzw== Received: from mail.u-boot.org (localhost [127.0.0.1]) by mail.u-boot.org (Postfix) with ESMTP id 1D91768908 for ; Sun, 7 Dec 2025 13:17:58 -0700 (MST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=u-boot.org; s=default; t=1765138676; bh=dbSbkwAJPdgtn9PDTSYwo7tV8iWQSjvNiE9O0ti1NdE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Bp56c6LivW58Kaq1rS4KIRcMCGtojf9DJqayGohBexIEGiWHdnH9fv6ZWGPMM80Nm qxMqk2mhgAt+rXjPWaee3pXsSlvJHg5UX6bF8iriYTi10zWCRlHCwo260VwnX1xGZU KYcAw+FK0NVZoCUHG7liQ6hIRBLgMTEwjkB4GLEe/ltZ+/6hX8pWAvevPwjtUsMblP awAoP4hArDzJHufuX6PSjt2aWrqSE4uqeCq/e8OCcDqZNCOZhPZLtZPsXJXd0ley+C Li1ujA/S67KSbPgfhC+4JIK88ohKV0g43wxAZBW8vTl6kxxv9MO5uqQsTDhgqDB05Y u7+HjT5zrNDmw== Received: from localhost (localhost [127.0.0.1]) by mail.u-boot.org (Postfix) with ESMTP id 465786883E; Sun, 7 Dec 2025 13:17:56 -0700 (MST) X-Virus-Scanned: Debian amavis at Received: from mail.u-boot.org ([127.0.0.1]) by localhost (mail.u-boot.org [127.0.0.1]) (amavis, port 10026) with ESMTP id Tr4DA2RYkeP8; Sun, 7 Dec 2025 13:17:56 -0700 (MST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=u-boot.org; s=default; t=1765138672; bh=8bbJT9XetQHBqFo0PpZbI3QISSLVOmCds65esIJ5TGg=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=aGElmTauu+KsIWbGQC1BYaXGfL+VTmz2PlpZMbZQ11Ou1s+ndlPbmqii/rKslU4UN 6RFLQnraHs4d91FLEKIQS7x5BXTGpzmTbK013jVbPBxVP/045XIEG0V/vppd3D1g9f M6h2kkGm+ULxQAhRXgMGkaEjFQq65V6Vy2D5Xoa5NCYNjDC3D0imWhYkukUK/XcBDv WXGNUJNvyoaBZRJ6Y/gcMQqEsdtMcfooRyYivEBIz19/D2VhF3MPSwRGT0AKmahvJ7 nSNjpFgVq1f8PgEmZHetwA9ahaQTaNL9IoFJzYUMamb9jkbDcXu3FscGvOBR7OxPUf EZ1bvZLjobNfw== Received: from u-boot.org (unknown [73.34.74.121]) by mail.u-boot.org (Postfix) with ESMTPSA id D0DA768950; Sun, 7 Dec 2025 13:17:51 -0700 (MST) From: Simon Glass To: U-Boot Concept Date: Sun, 7 Dec 2025 13:16:14 -0700 Message-ID: <20251207201628.2882382-18-sjg@u-boot.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251207201628.2882382-1-sjg@u-boot.org> References: <20251207201628.2882382-1-sjg@u-boot.org> MIME-Version: 1.0 Message-ID-Hash: MK5CWZ4HHU57HIJDJVQSRUZH24NM3Z4C X-Message-ID-Hash: MK5CWZ4HHU57HIJDJVQSRUZH24NM3Z4C X-MailFrom: sjg@u-boot.org X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header CC: Heinrich Schuchardt , Simon Glass , Claude X-Mailman-Version: 3.3.10 Precedence: list Subject: [Concept] [PATCH 17/22] expo: Add scene_render_obj() to render by object ID List-Id: Discussion and patches related to U-Boot Concept Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: Simon Glass Add a function to render a single object by its ID. This provides a convenient way to render individual objects without needing to look up the object pointer first. Assume that text mode is not used. Co-developed-by: Claude Signed-off-by: Simon Glass --- boot/scene.c | 18 ++++++++++++++++++ boot/scene_internal.h | 9 +++++++++ 2 files changed, 27 insertions(+) diff --git a/boot/scene.c b/boot/scene.c index 1bc4c9c25ac..1bcc3c39e33 100644 --- a/boot/scene.c +++ b/boot/scene.c @@ -903,6 +903,24 @@ int scene_arrange(struct scene *scn) return 0; } +int scene_render_obj(struct scene *scn, uint id) +{ + struct scene_obj *obj; + int ret; + + obj = scene_obj_find(scn, id, SCENEOBJT_NONE); + if (!obj) + return log_msg_ret("obj", -ENOENT); + + if (!(obj->flags & SCENEOF_HIDE)) { + ret = scene_obj_render(obj, false); + if (ret && ret != -ENOTSUPP) + return log_msg_ret("ren", ret); + } + + return 0; +} + int scene_render_deps(struct scene *scn, uint id) { struct scene_obj *obj; diff --git a/boot/scene_internal.h b/boot/scene_internal.h index 2bfbb5dcf50..5cc81f031a0 100644 --- a/boot/scene_internal.h +++ b/boot/scene_internal.h @@ -314,6 +314,15 @@ bool scene_textline_within(const struct scene *scn, */ int scene_send_click(struct scene *scn, int x, int y, struct expo_action *event); +/** + * scene_render_obj() - Render an object + * + * @scn: Scene containing the object + * @id: Object ID to render + * Returns: 0 if OK, -ENOENT if object not found, -ve on other error + */ +int scene_render_obj(struct scene *scn, uint id); + /** * scene_render_deps() - Render an object and its dependencies *