summaryrefslogtreecommitdiff
path: root/src/lib/elput/elput_input.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/elput/elput_input.c')
-rw-r--r--src/lib/elput/elput_input.c35
1 files changed, 35 insertions, 0 deletions
diff --git a/src/lib/elput/elput_input.c b/src/lib/elput/elput_input.c
index 64431bb354..b427c38ed1 100644
--- a/src/lib/elput/elput_input.c
+++ b/src/lib/elput/elput_input.c
@@ -288,6 +288,14 @@ _elput_input_init_end(void *data, Ecore_Thread *eth EINA_UNUSED)
libinput_unref(manager->input.lib);
manager->input.lib = NULL;
}
+
+ if ((manager->pending_ptr_x) || (manager->pending_ptr_y))
+ {
+ elput_input_pointer_xy_set(manager, NULL, manager->pending_ptr_x,
+ manager->pending_ptr_y);
+ manager->pending_ptr_x = 0;
+ manager->pending_ptr_y = 0;
+ }
}
static void
@@ -398,6 +406,13 @@ elput_input_pointer_xy_set(Elput_Manager *manager, const char *seat, int x, int
/* if no seat name is passed in, just use default seat name */
if (!seat) seat = "seat0";
+ if (eina_list_count(manager->input.seats) < 1)
+ {
+ manager->pending_ptr_x = x;
+ manager->pending_ptr_y = y;
+ return;
+ }
+
EINA_LIST_FOREACH(manager->input.seats, l, eseat)
{
if (!eseat->ptr) continue;
@@ -475,3 +490,23 @@ elput_input_pointer_max_set(Elput_Manager *manager, int maxw, int maxh)
manager->input.pointer_w = maxw;
manager->input.pointer_h = maxh;
}
+
+EAPI void
+elput_input_devices_calibrate(Elput_Manager *manager, int w, int h)
+{
+ Elput_Seat *eseat;
+ Elput_Device *edev;
+ Eina_List *l, *ll;
+
+ EINA_SAFETY_ON_NULL_RETURN(manager);
+
+ EINA_LIST_FOREACH(manager->input.seats, l, eseat)
+ {
+ EINA_LIST_FOREACH(eseat->devices, ll, edev)
+ {
+ edev->ow = w;
+ edev->oh = h;
+ _evdev_device_calibrate(edev);
+ }
+ }
+}