e_input: update pointer position to center of a rotated output 15/316115/1
authorduna.oh <duna.oh@samsung.com>
Tue, 10 Dec 2024 07:34:19 +0000 (16:34 +0900)
committerTizen Window System <tizen.windowsystem@gmail.com>
Tue, 10 Dec 2024 08:59:23 +0000 (17:59 +0900)
Change-Id: Ie9dc2c23251f42cbdb69c6f21467980feaab3424

src/bin/inputmgr/e_input_evdev.c

index c14d3d32743c14c31f9eae408eb4c5ad5d89e780..d0f6b0285d2d2cb7f5e673eb34c6a4c7da898d8b 100644 (file)
@@ -43,6 +43,23 @@ static void  _input_event_add(E_Input_Evdev *evdev, int event_type, Eina_Bool to
 
 static Eina_Bool _touch_blocked_by_palm, _touch_up_blocked_by_palm;
 
+static void
+_device_pointer_center_set(E_Input_Evdev *evdev, double w, double h)
+{
+   E_Input_Seat *seat = NULL;
+
+   seat = evdev->seat;
+   EINA_SAFETY_ON_NULL_RETURN(seat);
+
+   seat->ptr.dx = (double)(w / 2);
+   seat->ptr.dy = (double)(h / 2);
+   seat->ptr.ix = (int)seat->ptr.dx;
+   seat->ptr.iy = (int)seat->ptr.dy;
+
+   evdev->mouse.dx = seat->ptr.dx;
+   evdev->mouse.dy = seat->ptr.dy;
+}
+
 void
 e_input_evdev_device_calibration_set(E_Input_Evdev *evdev)
 {
@@ -73,13 +90,6 @@ e_input_evdev_device_calibration_set(E_Input_Evdev *evdev)
 
         if (evdev->caps & E_INPUT_SEAT_POINTER)
           {
-             evdev->seat->ptr.dx = (double)(w / 2);
-             evdev->seat->ptr.dy = (double)(h / 2);
-             evdev->seat->ptr.ix = (int)evdev->seat->ptr.dx;
-             evdev->seat->ptr.iy = (int)evdev->seat->ptr.dy;
-             evdev->mouse.dx = evdev->seat->ptr.dx;
-             evdev->mouse.dy = evdev->seat->ptr.dy;
-
              if (primary_output->config.rotation == 90 || primary_output->config.rotation == 270)
                {
                   temp = evdev->mouse.minx;
@@ -90,6 +100,7 @@ e_input_evdev_device_calibration_set(E_Input_Evdev *evdev)
                   evdev->mouse.maxw = evdev->mouse.maxh;
                   evdev->mouse.maxh = temp;
                }
+             _device_pointer_center_set(evdev, evdev->mouse.maxw, evdev->mouse.maxh);
           }
      }
 
@@ -2085,19 +2096,14 @@ _device_configured_size_get(E_Input_Evdev *evdev, int *x, int *y, int *w, int *h
                   evdev->mouse.maxh = output->config.geom.h;
                   if (evdev->caps & E_INPUT_SEAT_POINTER)
                     {
-                       evdev->seat->ptr.dx = (double)(evdev->mouse.maxw / 2);
-                       evdev->seat->ptr.dy = (double)(evdev->mouse.maxh / 2);
-                       evdev->seat->ptr.ix = (int)evdev->seat->ptr.dx;
-                       evdev->seat->ptr.iy = (int)evdev->seat->ptr.dy;
-                       evdev->mouse.dx = evdev->seat->ptr.dx;
-                       evdev->mouse.dy = evdev->seat->ptr.dy;
+                       _device_pointer_center_set(evdev, evdev->mouse.maxw, evdev->mouse.maxh);
                     }
                }
           }
 
-          evdev->output_configured = EINA_TRUE;
-          ELOGF("E_INPUT_EVDEV", "Device is configured by output x:%d,y:%d (w:%d, h:%d)",
-                NULL, evdev->mouse.minx, evdev->mouse.miny, evdev->mouse.maxw, evdev->mouse.maxh);
+        evdev->output_configured = EINA_TRUE;
+        ELOGF("E_INPUT_EVDEV", "Device is configured by output x:%d,y:%d (w:%d, h:%d)",
+              NULL, evdev->mouse.minx, evdev->mouse.miny, evdev->mouse.maxw, evdev->mouse.maxh);
      }
    if (x) *x = evdev->mouse.minx;
    if (y) *y = evdev->mouse.miny;