diff options
author | Marcel Hollerbach <mail@marcel-hollerbach.de> | 2021-03-24 16:07:27 +0100 |
---|---|---|
committer | Marcel Hollerbach <mail@marcel-hollerbach.de> | 2021-03-24 20:58:13 +0100 |
commit | 202bae05ec3af12a3979e21fe967cb4a4c66f587 (patch) | |
tree | e2af87bf21e09c5cdd23e4d2a1786359bd5c3fe4 /src/lib/elput/elput_input.c | |
parent | 49ac4121cf8fe52316faf2829d348c51d7ac7a5e (diff) | |
download | efl-202bae05ec3af12a3979e21fe967cb4a4c66f587.tar.gz |
WIP: elput: introduce gesture passingdevs/bu5hm4n/elput_with_swipe
In order to have that working on Xorg, this requires the libinput group
hack if you are not session leader.
for now only swipe bindings.
Diffstat (limited to 'src/lib/elput/elput_input.c')
-rw-r--r-- | src/lib/elput/elput_input.c | 29 |
1 files changed, 17 insertions, 12 deletions
diff --git a/src/lib/elput/elput_input.c b/src/lib/elput/elput_input.c index 392b157b1b..1ec339fb4e 100644 --- a/src/lib/elput/elput_input.c +++ b/src/lib/elput/elput_input.c @@ -301,20 +301,25 @@ _udev_process_event(struct libinput_event *event) } static void -_process_event(struct libinput_event *event) +_process_event(Elput_Manager *em, struct libinput_event *event) { if (_udev_process_event(event)) return; - if (_evdev_event_process(event)) return; + if (!em->only_gesture_events) + { + if (_evdev_event_process(event)) return; + } + if (_gesture_event_process(event)) return; } static void -_process_events(Elput_Input *ei) +_process_events(Elput_Manager *em) { struct libinput_event *event; + Elput_Input *ei = &em->input; while ((ei->lib) && (event = libinput_get_event(ei->lib))) { - _process_event(event); + _process_event(em, event); libinput_event_destroy(event); } } @@ -322,14 +327,14 @@ _process_events(Elput_Input *ei) static Eina_Bool _cb_input_dispatch(void *data, Ecore_Fd_Handler *hdlr EINA_UNUSED) { - Elput_Input *ei; + Elput_Manager *em; - ei = data; + em = data; - if ((ei->lib) && (libinput_dispatch(ei->lib) != 0)) + if ((em->input.lib) && (libinput_dispatch(em->input.lib) != 0)) WRN("libinput failed to dispatch events"); - _process_events(ei); + _process_events(em); return EINA_TRUE; } @@ -361,10 +366,10 @@ _elput_input_init_end(void *data, Ecore_Thread *eth EINA_UNUSED) manager->input.hdlr = ecore_main_fd_handler_add(libinput_get_fd(manager->input.lib), ECORE_FD_READ, _cb_input_dispatch, - &manager->input, NULL, NULL); + manager, NULL, NULL); if (manager->input.hdlr) - _process_events(&manager->input); + _process_events(manager); else { ERR("Could not create input fd handler"); @@ -431,7 +436,7 @@ _elput_input_enable(Elput_Manager *manager) { if (libinput_resume(manager->input.lib) != 0) return; manager->input.suspended = EINA_FALSE; - _process_events(&manager->input); + _process_events(manager); } } @@ -444,7 +449,7 @@ _elput_input_disable(Elput_Manager *manager) EINA_LIST_FOREACH(manager->input.seats, l, seat) seat->pending_motion = 1; if (manager->input.lib) libinput_suspend(manager->input.lib); - _process_events(&manager->input); + _process_events(manager); manager->input.suspended = EINA_TRUE; } |