From: duna.oh Date: Tue, 10 Dec 2024 07:34:19 +0000 (+0900) Subject: e_input: update pointer position to center of a rotated output X-Git-Tag: accepted/tizen/unified/20241216.185842~38 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F15%2F316115%2F1;p=platform%2Fupstream%2Fenlightenment.git e_input: update pointer position to center of a rotated output Change-Id: Ie9dc2c23251f42cbdb69c6f21467980feaab3424 --- diff --git a/src/bin/inputmgr/e_input_evdev.c b/src/bin/inputmgr/e_input_evdev.c index c14d3d3274..d0f6b0285d 100644 --- a/src/bin/inputmgr/e_input_evdev.c +++ b/src/bin/inputmgr/e_input_evdev.c @@ -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;