[Concept,v2,05/20] mouse: Replace mouse_press_state_t enum with bool
Commit Message
From: Simon Glass <sjg@chromium.org>
Replace the mouse_press_state_t enum with a simpler bool left_pressed
field in mouse_uc_priv. Convert BUTTON_PRESSED/BUTTON_RELEASED to defines
since they're still used in the mouse_event button structure.
This simplifies the code by directly tracking whether the left button
is pressed rather than using an enum to represent a binary state.
Clarify the comment to struct mouse_uc_priv while here.
Co-developed-by: Claude <noreply@anthropic.com>
Signed-off-by: Simon Glass <sjg@chromium.org>
---
Changes in v2:
- Add new patch to replace mouse_press_state_t enum with bool
drivers/input/mouse-uclass.c | 7 +++----
include/mouse.h | 12 +++++-------
2 files changed, 8 insertions(+), 11 deletions(-)
@@ -51,19 +51,18 @@ 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) {
- enum mouse_press_state_t new_state = event.button.press_state;
+ bool pressed = event.button.press_state == BUTTON_PRESSED;
bool pending = false;
/* Detect press->release transition (click) */
- if (uc_priv->left_button_state == BUTTON_PRESSED &&
- new_state == BUTTON_RELEASED) {
+ if (uc_priv->left_pressed && !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_button_state = new_state;
+ uc_priv->left_pressed = pressed;
/* If we just detected a click, return it */
if (pending) {
@@ -27,15 +27,13 @@ enum mouse_state_t {
BUTTON_SCROLL_MINUS = 1 << 4,
};
-enum mouse_press_state_t {
- BUTTON_RELEASED = 0,
- BUTTON_PRESSED,
-};
+#define BUTTON_RELEASED 0
+#define BUTTON_PRESSED 1
/**
- * struct mouse_uc_priv - private data for mouse uclass
+ * struct mouse_uc_priv - pre-device private data for mouse uclass
*
- * @left_button_state: Current state of left button (BUTTON_PRESSED/BUTTON_RELEASED)
+ * @left_pressed: True if left button is currently pressed
* @click_pos: Position where the click occurred
* @last_pos: Last position received from mouse
* @video_dev: Video device for coordinate scaling
@@ -43,7 +41,7 @@ enum mouse_press_state_t {
* @video_height: Height of video display
*/
struct mouse_uc_priv {
- enum mouse_press_state_t left_button_state;
+ bool left_pressed;
struct vid_pos click_pos;
struct vid_pos last_pos;
struct udevice *video_dev;