From patchwork Tue Oct 7 17:05:20 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Glass X-Patchwork-Id: 553 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=1759856796; bh=0sM7vOELE8GbqccpwYHpZ8QDxQ45Cg+c5vTW65s36tM=; 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=NER6L5teq7omozJV7OMqMgYe6MQtwXEWZYr0WwzuHHRvMmux4ZZQu+emAljR1UAuE 8IdGdB8uyZNZnQAHblXodn8guvBfMHpks3J097A4rXG8B6ppcRZVSoBHG1KTeUGD3i gK1Yj3MiJp5bFHMqSTFXtXAAslUFaf4YLoUJKa8SXw6llKILT63uzN7HZPDDbCOOe0 bqOEjN8vvwRDSSfiKUKJnTR0Sqy7DlI2SWYnXfFlbS+wgmD0zcub79sRdB8QkmXanR MtSs8hf3gQuObSRsqttRZdCSeNQ2ZoCYuSGh1pTUrq4FA2EUUIXiQrHqOxu+Ue97T7 aBnf5wUyzMaOw== Received: from localhost (localhost [127.0.0.1]) by mail.u-boot.org (Postfix) with ESMTP id 3A92368006 for ; Tue, 7 Oct 2025 11:06:36 -0600 (MDT) 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 EFrF4ckXCABQ for ; Tue, 7 Oct 2025 11:06:36 -0600 (MDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=u-boot.org; s=default; t=1759856794; bh=0sM7vOELE8GbqccpwYHpZ8QDxQ45Cg+c5vTW65s36tM=; 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=H6YV6MVUtOyt17sbhTeW04FO/ie6xTM9sxEP1KryL6Xt5P+nIvCPF8RzkqP/m0QrC oerZt0/uM6Ka2FkQU1f2Xq7NEKuI+6iWnZvYTxKzd0iKTTsEP635+65rqCwHN6BWw7 oWMI91mSZYI9MnNFWPtIiZ0bmj55GK5FAKs/yZ/zXbiGksxdIoEhgm9O6B0SJ3/jiK SUBz1hYl9Sj53V+Gddoque8cAQ5XYkOwqo/MOd/yb8VUdCX74cXcJc/Lt+2GSYGTck FQZnwDZgG3Vk10jcgNty8v/2DHtfGziltP2Iidp8syq4BVdiBixgc4TuLOhoJk7fmN 76MoZk+MVGOsg== Received: from mail.u-boot.org (localhost [127.0.0.1]) by mail.u-boot.org (Postfix) with ESMTP id DE44568008 for ; Tue, 7 Oct 2025 11:06:34 -0600 (MDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=u-boot.org; s=default; t=1759856791; bh=p6K2CM8xbsUduO93FIxH9YaCW95skBzH3+88J8fDs6o=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=tTldsSFX6QdLz2DM2qeEulU8wPzgBb9AvhC4Mv88GAJr4zdes2md9TX6MTiG/J232 EIAtbOSpOjTGVBRAhtu0a25bk4Sz9i3JMGOeZhGv+HBhNkfhj1c3IdHUANOzf0ILET UL/NVFijqPW2NG4CuxAnQyCAmxBRvJ8EGiFbqSH04KeYTWLc+dRX4a9il27VB8eSqj C/x+ji9YqsIhpt0YA2DAAU0Tndg5qh/3pJcKOGS3wYDmUrd22MqUU7ZbpkglF6pDzu YlA8DQ580wlBhoq3GygYnILrBh79MpmZAv/shrLQLDWeGIvWjCq3BJmg6QDGmnlvK8 nGiQ2c+sdwFpg== Received: from localhost (localhost [127.0.0.1]) by mail.u-boot.org (Postfix) with ESMTP id D978C67EE5; Tue, 7 Oct 2025 11:06:31 -0600 (MDT) 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 TtTPPlCmyIMV; Tue, 7 Oct 2025 11:06:31 -0600 (MDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=u-boot.org; s=default; t=1759856790; bh=9dLIAmbUkSf1Pc4Awx6uqhQfzuGLrNedlzl6RPj7rFI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=VdqheEIK2UWF6P/yBsRRNT+v5gBc0s0vIquBZi5+r4zviS90FW4tx50ByL25UL12m Y0LIJyrPSuoWIPV+zvnQrQpdj0m1R/CH/mvKI+8BYL26xBFHg+NPkcs/58gElokp+s fgDQFx+fB933LToK9U+dmukqYAKQfgouuUqXg/QjB/FUFe8x1cUGYS1NkCbxtl/ToO K1W0N302KgQzRpZawOrOQCDbG36r6v4c+a75ZEzZBe8b3GrDB4Hm5RLZl5wKAkEoLk 12JPnHTXASnVxO6KOmmw0iOmgqU1j0r1Gp8GJ8CX9SFbq7Tj3JyCaREp0ZnYGO/f6i KWp/blQit7HHQ== Received: from u-boot.org (unknown [73.34.74.121]) by mail.u-boot.org (Postfix) with ESMTPSA id 537B567DD0; Tue, 7 Oct 2025 11:06:30 -0600 (MDT) From: Simon Glass To: U-Boot Concept Date: Tue, 7 Oct 2025 11:05:20 -0600 Message-ID: <20251007170549.541981-7-sjg@u-boot.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251007170549.541981-1-sjg@u-boot.org> References: <20251007170549.541981-1-sjg@u-boot.org> MIME-Version: 1.0 Message-ID-Hash: VOLLTPVHZBZIYVRKT4LGKASGAYEZ56X5 X-Message-ID-Hash: VOLLTPVHZBZIYVRKT4LGKASGAYEZ56X5 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 v2 06/20] mouse: Replace press_state with bool pressed 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 Change the mouse_button structure to use a bool pressed field instead of an unsigned char press_state. This simplifies the API by using a natural boolean type for a binary state. Remove the BUTTON_PRESSED/BUTTON_RELEASED defines as they're no longer needed. Update all mouse drivers, tests, and the mouse command to use the new field name and type. Co-developed-by: Claude Signed-off-by: Simon Glass --- Changes in v2: - Add new patch to replace press_state with bool pressed arch/sandbox/cpu/sdl.c | 4 +--- cmd/mouse.c | 2 +- drivers/input/efi_mouse.c | 2 +- drivers/input/mouse-uclass.c | 5 ++--- drivers/input/usb_mouse.c | 2 +- include/mouse.h | 7 ++----- test/dm/mouse.c | 16 ++++++++-------- 7 files changed, 16 insertions(+), 22 deletions(-) diff --git a/arch/sandbox/cpu/sdl.c b/arch/sandbox/cpu/sdl.c index c3745fa660e..dd2589c64e2 100644 --- a/arch/sandbox/cpu/sdl.c +++ b/arch/sandbox/cpu/sdl.c @@ -110,9 +110,7 @@ static void sandbox_sdl_poll_events(void) m->button.button = BUTTON_MIDDLE; else if (event.button.button == SDL_BUTTON_RIGHT) m->button.button = BUTTON_RIGHT; - m->button.press_state = event.type == - SDL_MOUSEBUTTONDOWN ? - BUTTON_PRESSED : BUTTON_RELEASED; + m->button.pressed = event.type == SDL_MOUSEBUTTONDOWN; m->button.x = event.button.x; m->button.y = event.motion.y; break; diff --git a/cmd/mouse.c b/cmd/mouse.c index 60210b9f868..ebf496307b9 100644 --- a/cmd/mouse.c +++ b/cmd/mouse.c @@ -35,7 +35,7 @@ static int do_mouse_dump(struct cmd_tbl *cmdtp, int flag, int argc, struct mouse_button *but = &evt.button; printf("button: button==%d, press=%d, clicks=%d, X=%d, Y=%d\n", - but->button, but->press_state, + but->button, but->pressed, but->clicks, but->x, but->y); break; } diff --git a/drivers/input/efi_mouse.c b/drivers/input/efi_mouse.c index 84347951f62..077e2148da9 100644 --- a/drivers/input/efi_mouse.c +++ b/drivers/input/efi_mouse.c @@ -78,7 +78,7 @@ static int efi_mouse_get_event(struct udevice *dev, struct mouse_event *event) u8 mask = 1 << i; if (diff & mask) { but->button = i; - but->press_state = (new_buttons & mask) ? 1 : 0; + but->pressed = (new_buttons & mask) ? true : false; but->clicks = 1; but->x = priv->x; but->y = priv->y; diff --git a/drivers/input/mouse-uclass.c b/drivers/input/mouse-uclass.c index 43b6514f926..6bfce915e2b 100644 --- a/drivers/input/mouse-uclass.c +++ b/drivers/input/mouse-uclass.c @@ -51,18 +51,17 @@ int mouse_get_click(struct udevice *dev, struct vid_pos *pos) /* Only process button events for left button */ if (event.type == MOUSE_EV_BUTTON && event.button.button == BUTTON_LEFT) { - bool pressed = event.button.press_state == BUTTON_PRESSED; bool pending = false; /* Detect press->release transition (click) */ - if (uc_priv->left_pressed && !pressed) { + if (uc_priv->left_pressed && !event.button.pressed) { pending = true; uc_priv->click_pos.x = event.button.x; uc_priv->click_pos.y = event.button.y; } /* Update button state */ - uc_priv->left_pressed = pressed; + uc_priv->left_pressed = event.button.pressed; /* If we just detected a click, return it */ if (pending) { diff --git a/drivers/input/usb_mouse.c b/drivers/input/usb_mouse.c index 74f093a4b5a..456d84d5e39 100644 --- a/drivers/input/usb_mouse.c +++ b/drivers/input/usb_mouse.c @@ -142,7 +142,7 @@ static int usb_mouse_get_event(struct udevice *dev, struct mouse_event *event) if (diff && mask) { but->button = i; - but->press_state = priv->buttons & mask; + but->pressed = priv->buttons & mask; but->clicks = 1; but->x = priv->x; but->y = priv->y; diff --git a/include/mouse.h b/include/mouse.h index 96b75ae1fa6..62cabf24769 100644 --- a/include/mouse.h +++ b/include/mouse.h @@ -27,9 +27,6 @@ enum mouse_state_t { BUTTON_SCROLL_MINUS = 1 << 4, }; -#define BUTTON_RELEASED 0 -#define BUTTON_PRESSED 1 - /** * struct mouse_uc_priv - pre-device private data for mouse uclass * @@ -74,14 +71,14 @@ struct mouse_event { /** * @button: Button number that was pressed/released (BUTTON_...) - * @state: BUTTON_PRESSED / BUTTON_RELEASED + * @pressed: True if button was pressed, false if released * @clicks: number of clicks (normally 1; 2 = double-click) * @x: X position of mouse * @y: Y position of mouse */ struct mouse_button { unsigned char button; - unsigned char press_state; + bool pressed; unsigned char clicks; unsigned short x; unsigned short y; diff --git a/test/dm/mouse.c b/test/dm/mouse.c index c22cd026cb2..893644005cc 100644 --- a/test/dm/mouse.c +++ b/test/dm/mouse.c @@ -75,7 +75,7 @@ static int dm_test_mouse_button(struct unit_test_state *uts) /* inject a button press event */ inject.type = MOUSE_EV_BUTTON; inject.button.button = BUTTON_LEFT; - inject.button.press_state = BUTTON_PRESSED; + inject.button.pressed = true; inject.button.clicks = 1; inject.button.x = 150; inject.button.y = 250; @@ -86,7 +86,7 @@ static int dm_test_mouse_button(struct unit_test_state *uts) ut_assertok(mouse_get_event(dev, &event)); ut_asserteq(MOUSE_EV_BUTTON, event.type); ut_asserteq(BUTTON_LEFT, event.button.button); - ut_asserteq(BUTTON_PRESSED, event.button.press_state); + ut_asserteq(true, event.button.pressed); ut_asserteq(1, event.button.clicks); ut_asserteq(150, event.button.x); ut_asserteq(250, event.button.y); @@ -112,7 +112,7 @@ static int dm_test_mouse_click(struct unit_test_state *uts) /* inject a left button press */ inject.type = MOUSE_EV_BUTTON; inject.button.button = BUTTON_LEFT; - inject.button.press_state = BUTTON_PRESSED; + inject.button.pressed = true; inject.button.clicks = 1; inject.button.x = 300; inject.button.y = 400; @@ -128,7 +128,7 @@ static int dm_test_mouse_click(struct unit_test_state *uts) /* inject a left button release */ inject.type = MOUSE_EV_BUTTON; inject.button.button = BUTTON_LEFT; - inject.button.press_state = BUTTON_RELEASED; + inject.button.pressed = false; inject.button.clicks = 1; inject.button.x = 300; inject.button.y = 400; @@ -161,7 +161,7 @@ static int dm_test_mouse_click_no_coordinates(struct unit_test_state *uts) /* inject press and release to create a click */ inject.type = MOUSE_EV_BUTTON; inject.button.button = BUTTON_LEFT; - inject.button.press_state = BUTTON_PRESSED; + inject.button.pressed = true; inject.button.clicks = 1; inject.button.x = 500; inject.button.y = 600; @@ -170,7 +170,7 @@ static int dm_test_mouse_click_no_coordinates(struct unit_test_state *uts) /* process the press event */ ut_asserteq(-EAGAIN, mouse_get_click(dev, &pos)); - inject.button.press_state = BUTTON_RELEASED; + inject.button.pressed = false; sandbox_mouse_inject(dev, &inject); /* now test that click is detected (coordinates are ignored) */ @@ -197,7 +197,7 @@ static int dm_test_mouse_right_button(struct unit_test_state *uts) */ inject.type = MOUSE_EV_BUTTON; inject.button.button = BUTTON_RIGHT; - inject.button.press_state = BUTTON_PRESSED; + inject.button.pressed = true; inject.button.clicks = 1; inject.button.x = 100; inject.button.y = 200; @@ -205,7 +205,7 @@ static int dm_test_mouse_right_button(struct unit_test_state *uts) ut_asserteq(-EAGAIN, mouse_get_click(dev, &pos)); - inject.button.press_state = BUTTON_RELEASED; + inject.button.pressed = false; sandbox_mouse_inject(dev, &inject); /* still no click detected since it was right button */