diff --git a/meson.build b/meson.build index 8fc094014..f081e5b1a 100644 --- a/meson.build +++ b/meson.build @@ -298,6 +298,7 @@ dep_eo = dependency('eo' , required: true) dep_eldbus = dependency('eldbus' , required: true) dep_emotion = dependency('emotion' , required: true) dep_elementary = dependency('elementary' , required: true) +dep_elput = dependency('elput' , required: true) dep_wayland = [] if get_option('wl') == true diff --git a/src/bin/e_bindings.c b/src/bin/e_bindings.c index 9c53e1121..f6a494069 100644 --- a/src/bin/e_bindings.c +++ b/src/bin/e_bindings.c @@ -21,10 +21,6 @@ static Eina_List *acpi_bindings = NULL; static Eina_List *swipe_bindings = NULL; static unsigned int bindings_disabled = 0; -static int gesture_capable_devices = 0; - -static E_Bindings_Swipe_Live_Update live_update; -static E_Bindings_Swipe_Live_Update live_update_data; EINTERN E_Action *(*e_binding_key_list_cb)(E_Binding_Context, Ecore_Event_Key*, E_Binding_Modifier, E_Binding_Key **); @@ -1614,19 +1610,6 @@ _e_bindings_edge_cb_timer(void *data) return ECORE_CALLBACK_CANCEL; } - -E_API void -e_bindings_gesture_capable_devices_set(int number) -{ - gesture_capable_devices = number; -} - -E_API int -e_bindings_gesture_capable_devices_get(void) -{ - return gesture_capable_devices; -} - E_API void e_bindings_swipe_add(E_Binding_Context ctxt, double direction, double length, unsigned int fingers, double error, const char *action, const char *params) { @@ -1727,22 +1710,3 @@ e_bindings_swipe_find_candidates(E_Binding_Context ctxt, double direction, doubl return ret; } - -E_API void -e_bindings_swipe_live_update_hook_set(E_Bindings_Swipe_Live_Update update, void *data) -{ - live_update = update; - live_update_data = data; -} - -E_API E_Bindings_Swipe_Live_Update -e_bindings_swipe_live_update_hook_get(void) -{ - return live_update; -} - -E_API void* -e_bindings_swipe_live_update_hook_data_get(void) -{ - return live_update_data; -} diff --git a/src/bin/e_bindings.h b/src/bin/e_bindings.h index 40a048050..f00970722 100644 --- a/src/bin/e_bindings.h +++ b/src/bin/e_bindings.h @@ -212,8 +212,6 @@ typedef struct { double acceptance; //0 to 1 } E_Binding_Swipe_Candidate; -typedef void (*E_Bindings_Swipe_Live_Update)(void *data, Eina_Bool end, double direction, double length, double error, unsigned int fingers); - /** * Direction is in radiens, 0 is pointing to the right. Going clockwise. (Only positive range) */ @@ -222,11 +220,6 @@ E_API void e_bindings_swipe_add(E_Binding_Context ctxt, double directio E_API void e_bindings_swipe_del(E_Binding_Context ctxt, double direction, double length, unsigned int fingers, double error, const char *action, const char *params); E_API E_Action* e_bindings_swipe_handle(E_Binding_Context ctxt, E_Object *obj, double direction, double length, unsigned int fingers); E_API Eina_Inarray/**/* e_bindings_swipe_find_candidates(E_Binding_Context ctxt, double direction, double lenght, unsigned int fingers); -E_API void e_bindings_swipe_live_update_hook_set(E_Bindings_Swipe_Live_Update update, void *data); -E_API E_Bindings_Swipe_Live_Update e_bindings_swipe_live_update_hook_get(void); -E_API void e_bindings_gesture_capable_devices_set(int number); -E_API int e_bindings_gesture_capable_devices_get(void); -E_API void* e_bindings_swipe_live_update_hook_data_get(void); E_API int e_bindings_evas_modifiers_convert(Evas_Modifier *modifiers); E_API int e_bindings_modifiers_to_ecore_convert(E_Binding_Modifier modifiers); diff --git a/src/modules/gesture_recognition/e_mod_main.c b/src/bin/e_gesture.c similarity index 85% rename from src/modules/gesture_recognition/e_mod_main.c rename to src/bin/e_gesture.c index aad0144a5..94622836d 100644 --- a/src/modules/gesture_recognition/e_mod_main.c +++ b/src/bin/e_gesture.c @@ -5,12 +5,6 @@ #include #include -E_API E_Module_Api e_modapi = - { - E_MODULE_API_VERSION, - "Gesture Recognition" - }; - static Eina_Hash *active_gestures; static Elput_Manager *manager; @@ -22,6 +16,10 @@ typedef struct { } visuals; } Swipe_Stats; +static int gesture_capable_devices = 0; +static E_Bindings_Swipe_Live_Update live_update; +static void* live_update_data; + static Swipe_Stats* _find_swipe_gesture_recognizition(Elput_Device *dev) { @@ -92,10 +90,9 @@ _stats_free(void *ptr) static void _apply_visual_changes(Swipe_Stats *stats) { - E_Bindings_Swipe_Live_Update live_update = e_bindings_swipe_live_update_hook_get(); if (live_update) { - live_update(e_bindings_swipe_live_update_hook_data_get(), EINA_FALSE, _config_angle(stats->pos), eina_vector2_length_get(&stats->pos), 0.8, stats->fingers); + live_update(live_update_data, EINA_FALSE, _config_angle(stats->pos), eina_vector2_length_get(&stats->pos), 0.8, stats->fingers); } else if (stats->visuals.win) { @@ -151,11 +148,10 @@ _swipe_cb(void *data EINA_UNUSED, int type, void *event) } else if (type == ELPUT_EVENT_SWIPE_END) { - E_Bindings_Swipe_Live_Update live_update = e_bindings_swipe_live_update_hook_get(); Swipe_Stats *stats = _find_swipe_gesture_recognizition(dev); if (live_update) - live_update(e_bindings_swipe_live_update_hook_data_get(), EINA_TRUE, _config_angle(stats->pos), eina_vector2_length_get(&stats->pos), 0.8, stats->fingers); + live_update(live_update_data, EINA_TRUE, _config_angle(stats->pos), eina_vector2_length_get(&stats->pos), 0.8, stats->fingers); else e_bindings_swipe_handle(E_BINDING_CONTEXT_NONE, NULL, _config_angle(stats->pos), eina_vector2_length_get(&stats->pos), stats->fingers); @@ -179,19 +175,25 @@ _debug(void *data EINA_UNUSED, int type EINA_UNUSED, void *event EINA_UNUSED) number_of_gesture_devices++; } } - e_bindings_gesture_capable_devices_set(number_of_gesture_devices); + gesture_capable_devices= number_of_gesture_devices; return ECORE_CALLBACK_PASS_ON; } static void -_init_for_x11(E_Module *m EINA_UNUSED) +_init_for_x11(void) { const char *device = NULL; - elput_init(); + if (!elput_init()) + { + ERR("Failed to init elput"); + return; + } device = getenv("XDG_SEAT"); if (!device) device = "seat0"; manager = elput_manager_connect_gestures(device, 0); + + EINA_SAFETY_ON_NULL_RETURN(manager); elput_input_init(manager); } @@ -205,11 +207,11 @@ _shutdown_for_x11(void) E_API int -e_modapi_init(E_Module *m EINA_UNUSED) +e_gesture_init(void) { if (e_comp->comp_type == E_PIXMAP_TYPE_X) { - _init_for_x11(m); + _init_for_x11(); } active_gestures = eina_hash_pointer_new(_stats_free); @@ -223,7 +225,7 @@ e_modapi_init(E_Module *m EINA_UNUSED) } E_API int -e_modapi_shutdown(E_Module *m EINA_UNUSED) +e_gesture_shutdown(void) { if (e_comp->comp_type == E_PIXMAP_TYPE_X) { @@ -233,10 +235,15 @@ e_modapi_shutdown(E_Module *m EINA_UNUSED) return 1; } -E_API int -e_modapi_save(E_Module *m EINA_UNUSED) +E_API void +e_bindings_swipe_live_update_hook_set(E_Bindings_Swipe_Live_Update update, void *data) { - - return 1; + live_update = update; + live_update_data = data; } +E_API int +e_bindings_gesture_capable_devices_get(void) +{ + return gesture_capable_devices; +} diff --git a/src/bin/e_gesture.h b/src/bin/e_gesture.h new file mode 100644 index 000000000..0593ec472 --- /dev/null +++ b/src/bin/e_gesture.h @@ -0,0 +1,13 @@ +#ifdef E_TYPEDEFS + +typedef void (*E_Bindings_Swipe_Live_Update)(void *data, Eina_Bool end, double direction, double length, double error, unsigned int fingers); + +#else +#ifndef E_GESTURES_H +#define E_GESTURES_H +E_API int e_gesture_init(void); +E_API int e_gesture_shutdown(void); +E_API void e_bindings_swipe_live_update_hook_set(E_Bindings_Swipe_Live_Update update, void *data); +E_API int e_bindings_gesture_capable_devices_get(void); +#endif +#endif diff --git a/src/bin/e_includes.h b/src/bin/e_includes.h index 894e4f1b2..c2b0e69a9 100644 --- a/src/bin/e_includes.h +++ b/src/bin/e_includes.h @@ -154,6 +154,7 @@ #include "e_comp_x_devices.h" #include "e_comp_x_randr.h" #include "e_watchdog.h" +#include "e_gesture.h" #ifdef HAVE_WAYLAND # include "e_comp_wl.h" diff --git a/src/bin/e_main.c b/src/bin/e_main.c index 4982d327a..2fdaeee17 100644 --- a/src/bin/e_main.c +++ b/src/bin/e_main.c @@ -1054,6 +1054,11 @@ main(int argc, char **argv) e_comp_canvas_keys_grab(); TS("E_Comp_Canvas Keys Grab Done"); + TS("E_Gesture Init"); + e_gesture_init(); + TS("E_Gesture Init Done"); + _e_main_shutdown_push(e_gesture_shutdown); + TS("Run Startup Apps"); if (!nostartup) { diff --git a/src/bin/meson.build b/src/bin/meson.build index 568dd008f..f4f1c315f 100644 --- a/src/bin/meson.build +++ b/src/bin/meson.build @@ -33,6 +33,7 @@ deps_e = [ dep_eldbus, dep_emotion, dep_elementary, + dep_elput, dep_intl ] @@ -223,6 +224,7 @@ src = [ 'e_xinerama.c', 'e_zoomap.c', 'e_zone.c', + 'e_gesture.c', 'efx/efx_bumpmapping.c', 'efx/efx.c', 'efx/efx_fade.c', @@ -401,7 +403,8 @@ hdr = [ 'e_xkb.h', 'e_xsettings.h', 'e_zoomap.h', - 'e_zone.h' + 'e_zone.h', + 'e_gesture.h' ] if config_h.has('HAVE_WAYLAND') == true diff --git a/src/modules/gesture_recognition/e-module-gesture_recognition.edj b/src/modules/gesture_recognition/e-module-gesture_recognition.edj deleted file mode 100644 index eae0cd28f..000000000 Binary files a/src/modules/gesture_recognition/e-module-gesture_recognition.edj and /dev/null differ diff --git a/src/modules/gesture_recognition/meson.build b/src/modules/gesture_recognition/meson.build deleted file mode 100644 index 0bd6b50ef..000000000 --- a/src/modules/gesture_recognition/meson.build +++ /dev/null @@ -1,4 +0,0 @@ -src = files( - 'e_mod_main.c', -) -deps += [dependency('elput')] diff --git a/src/modules/gesture_recognition/module.desktop b/src/modules/gesture_recognition/module.desktop deleted file mode 100644 index b5509fbc1..000000000 --- a/src/modules/gesture_recognition/module.desktop +++ /dev/null @@ -1,10 +0,0 @@ -[Desktop Entry] -Type=Link -Name=Gesture Recognition -Name[fr]=Reconnaissance des gestes -Name[it]=Riconoscimento gesture -Comment=Gesture recognition using libinput. -Comment[fr]=Reconnaissance des gestes utilisant libinput. -Comment[it]=Riconoscimento delle gesture per mezzo di libinput. -Icon=e-module-gesture_recognition -X-Enlightenment-ModuleType=utils diff --git a/src/modules/meson.build b/src/modules/meson.build index 358824631..36a6392ec 100644 --- a/src/modules/meson.build +++ b/src/modules/meson.build @@ -45,7 +45,6 @@ mods = [ 'tiling', 'packagekit', 'vkbd', - 'gesture_recognition', 'procstats', # modules have a custom binary as well 'battery',