e_input_evdev: reduce duplicated code for creating mouse button event 13/325013/1
authorJihoon Kim <jihoon48.kim@samsung.com>
Mon, 19 May 2025 02:34:06 +0000 (11:34 +0900)
committerTizen Window System <tizen.windowsystem@gmail.com>
Fri, 30 May 2025 09:35:15 +0000 (18:35 +0900)
Change-Id: I28a1882740760c8fd742872a7ddaa955fd3a2c64
Signed-off-by: Jihoon Kim <jihoon48.kim@samsung.com>
src/bin/inputmgr/e_input_evdev.c

index 818b9557329b94176365e8f56c2afd11d8e00817..2296bc8e974dbf3126a97ca12e4344ec760f5ad9 100644 (file)
@@ -1240,6 +1240,44 @@ e_input_evdev_handle_pointer_motion_absolute(E_Input_Evdev *evdev, struct libinp
    _device_pointer_motion(evdev, event);
 }
 
+static Ecore_Event_Mouse_Button *
+_mouse_button_event_create(E_Input_Evdev *evdev, uint32_t timestamp, double radius_x, double radius_y, double pressure, double angle)
+{
+   E_Input_Backend *input = NULL;
+   Ecore_Event_Mouse_Button *ev = NULL;
+
+   if (!(input = e_input_seat_input_get(evdev->seat))) return NULL;
+   if (!(ev = calloc(1, sizeof(Ecore_Event_Mouse_Button)))) return NULL;
+
+   ev->window = (Ecore_Window)input->dev->window;
+   ev->event_window = (Ecore_Window)input->dev->window;
+   ev->root_window = (Ecore_Window)input->dev->window;
+   ev->timestamp = timestamp;
+   ev->same_screen = 1;
+
+   _device_modifiers_update(evdev);
+   ev->modifiers = evdev->xkb.modifiers;
+
+   ev->x = e_input_seat_pointer_ix_get(evdev->seat);
+   ev->y = e_input_seat_pointer_iy_get(evdev->seat);
+   ev->root.x = ev->x;
+   ev->root.y = ev->y;
+
+   ev->multi.device = evdev->mt_slot;
+   ev->multi.radius = 1;
+   ev->multi.radius_x = radius_x;
+   ev->multi.radius_y = radius_y;
+   ev->multi.pressure = pressure;
+   ev->multi.angle = angle;
+
+   ev->multi.x = ev->x;
+   ev->multi.y = ev->y;
+   ev->multi.root.x = ev->x;
+   ev->multi.root.y = ev->y;
+
+   return ev;
+}
+
 EINTERN void
 e_input_evdev_handle_button(E_Input_Evdev *evdev, struct libinput_event_pointer *event)
 {
@@ -1297,35 +1335,8 @@ e_input_evdev_handle_button(E_Input_Evdev *evdev, struct libinput_event_pointer
         evdev->mouse.pressed_button &= ~(1 << button);
      }
 
-   if (!(ev = calloc(1, sizeof(Ecore_Event_Mouse_Button))))
-     {
-        return;
-     }
-
-   ev->window = (Ecore_Window)input->dev->window;
-   ev->event_window = (Ecore_Window)input->dev->window;
-   ev->root_window = (Ecore_Window)input->dev->window;
-   ev->timestamp = timestamp;
-   ev->same_screen = 1;
-
-   _device_modifiers_update(evdev);
-   ev->modifiers = evdev->xkb.modifiers;
-
-   ev->x = e_input_seat_pointer_ix_get(evdev->seat);
-   ev->y = e_input_seat_pointer_iy_get(evdev->seat);
-   ev->root.x = ev->x;
-   ev->root.y = ev->y;
-
-   ev->multi.device = evdev->mt_slot;
-   ev->multi.radius = 1;
-   ev->multi.radius_x = 1;
-   ev->multi.radius_y = 1;
-   ev->multi.pressure = 1.0;
-   ev->multi.angle = 0.0;
-   ev->multi.x = ev->x;
-   ev->multi.y = ev->y;
-   ev->multi.root.x = ev->x;
-   ev->multi.root.y = ev->y;
+   ev = _mouse_button_event_create(evdev, timestamp, 1, 1, 1.0, 0.0);
+   if (!ev) return;
 
    if (state)
      {
@@ -1740,33 +1751,8 @@ _device_handle_touch_event_send(E_Input_Evdev *evdev, struct libinput_event_touc
           angle = libinput_event_touch_get_orientation(event);
      }
 
-   if (!(ev = calloc(1, sizeof(Ecore_Event_Mouse_Button)))) return;
-
-   ev->window = (Ecore_Window)input->dev->window;
-   ev->event_window = (Ecore_Window)input->dev->window;
-   ev->root_window = (Ecore_Window)input->dev->window;
-   ev->timestamp = timestamp;
-   ev->same_screen = 1;
-
-   _device_modifiers_update(evdev);
-   ev->modifiers = evdev->xkb.modifiers;
-
-   ev->x = e_input_seat_pointer_ix_get(evdev->seat);
-   ev->y = e_input_seat_pointer_iy_get(evdev->seat);
-   ev->root.x = ev->x;
-   ev->root.y = ev->y;
-
-   ev->multi.device = evdev->mt_slot;
-   ev->multi.radius = 1;
-   ev->multi.radius_x = radius_x;
-   ev->multi.radius_y = radius_y;
-   ev->multi.pressure = pressure;
-   ev->multi.angle = angle;
-
-   ev->multi.x = ev->x;
-   ev->multi.y = ev->y;
-   ev->multi.root.x = ev->x;
-   ev->multi.root.y = ev->y;
+   ev = _mouse_button_event_create(evdev, timestamp, radius_x, radius_y, pressure, angle);
+   if (!ev) return;
 
    if (state == ECORE_EVENT_MOUSE_BUTTON_DOWN)
      {
@@ -1905,29 +1891,8 @@ _device_handle_touch_cancel_send(E_Input_Evdev *evdev, struct libinput_event_tou
 
    timestamp = libinput_event_touch_get_time(event);
 
-   if (!(ev = calloc(1, sizeof(Ecore_Event_Mouse_Button)))) return;
-
-   ev->window = (Ecore_Window)input->dev->window;
-   ev->event_window = (Ecore_Window)input->dev->window;
-   ev->root_window = (Ecore_Window)input->dev->window;
-   ev->timestamp = timestamp;
-   ev->same_screen = 1;
-
-   ev->x = e_input_seat_pointer_ix_get(evdev->seat);
-   ev->y = e_input_seat_pointer_iy_get(evdev->seat);
-   ev->root.x = ev->x;
-   ev->root.y = ev->y;
-
-   ev->multi.device = evdev->mt_slot;
-   ev->multi.radius = 1;
-   ev->multi.radius_x = 1;
-   ev->multi.radius_y = 1;
-   ev->multi.pressure = 1.0;
-   ev->multi.angle = 0.0;
-   ev->multi.x = ev->x;
-   ev->multi.y = ev->y;
-   ev->multi.root.x = ev->x;
-   ev->multi.root.y = ev->y;
+   ev = _mouse_button_event_create(evdev, timestamp, 1, 1, 1.0, 0.0);
+   if (!ev) return;
 
    evdev->touch.pressed &= ~(1 << ev->multi.device);