From: SooChan Lim Date: Tue, 9 Jul 2024 01:40:12 +0000 (+0900) Subject: e_input_device: add input to dev->inputs list at e_input_device X-Git-Tag: accepted/tizen/unified/20240712.160104~17 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=39eb836af82b0bc6b73f32fa17f6380628734f98;p=platform%2Fupstream%2Fenlightenment.git e_input_device: add input to dev->inputs list at e_input_device For removing circular dependency, e_input_device depends on e_input_backend. e_input_backend don't need to know the e_input_device. Change-Id: I2f6cb2000825d2d08683326d71807c65cab3794b --- diff --git a/src/bin/inputmgr/e_input_device.c b/src/bin/inputmgr/e_input_device.c index 562dc75c1f..b10f254b3c 100644 --- a/src/bin/inputmgr/e_input_device.c +++ b/src/bin/inputmgr/e_input_device.c @@ -489,7 +489,7 @@ e_input_device_rotation_set(E_Input_Device *dev, unsigned int rotation) primary_output = e_display_primary_output_get(); #else primary_output = e_comp_screen_primary_output_get(e_comp->e_comp_screen); -#endif +#endif EINA_SAFETY_ON_NULL_RETURN(primary_output); EINA_LIST_FOREACH(dev->seats, l, seat) @@ -610,7 +610,7 @@ e_input_device_touch_rotation_set(E_Input_Device *dev, unsigned int rotation) primary_output = e_display_primary_output_get(); #else primary_output = e_comp_screen_primary_output_get(e_comp->e_comp_screen); -#endif +#endif e_output_size_get(primary_output, &output_w, &output_h); default_w = (float)output_w; default_h = (float)output_h; @@ -677,7 +677,7 @@ e_input_device_touch_transformation_set(E_Input_Device *dev, int offset_x, int o primary_output = e_display_primary_output_get(); #else primary_output = e_comp_screen_primary_output_get(e_comp->e_comp_screen); -#endif +#endif e_output_size_get(primary_output, &output_w, &output_h); default_w = (float)output_w; default_h = (float)output_h; @@ -750,24 +750,49 @@ _libinput_log_handler(struct libinput *libinput EINA_UNUSED, EINTERN Eina_Bool e_input_device_input_backend_create(E_Input_Device *dev, E_Input_Libinput_Backend backend) { - Eina_Bool res = EINA_FALSE; + E_Input_Backend *input; + char *env; + int ndevices = 0; EINA_SAFETY_ON_NULL_RETURN_VAL(dev, EINA_FALSE); if (backend == E_INPUT_LIBINPUT_BACKEND_UDEV) { - TRACE_INPUT_BEGIN(e_input_device_input_create_libinput_udev); - res = e_input_device_input_create_libinput_udev(dev); + TRACE_INPUT_BEGIN(e_input_backend_create_libinput_udev); + input = e_input_backend_create_libinput_udev(); TRACE_INPUT_END(); + if (!input) return EINA_FALSE; + + /* set reference for parent device */ + input->dev = dev; // TODO: make a api to set dev } - else if (backend == E_INPUT_LIBINPUT_BACKEND_PATH) + else // (backend == E_INPUT_LIBINPUT_BACKEND_PATH) { - TRACE_INPUT_BEGIN(e_input_device_input_create_libinput_path); - res = e_input_device_input_create_libinput_path(dev); + TRACE_INPUT_BEGIN(e_input_backend_create_libinput_path); + env = e_util_env_get("PATH_DEVICES_NUM"); + if (env) + { + ndevices = atoi(env); + E_FREE(env); + } + + if (ndevices <= 0 || ndevices >= INT_MAX) + return EINA_TRUE; + + INF("PATH_DEVICES_NUM : %d", ndevices); + + input = e_input_backend_create_libinput_path(ndevices); TRACE_INPUT_END(); + if (!input) return EINA_FALSE; + + /* set reference for parent device */ + input->dev = dev; // TODO: make a api to set dev } - return res; + /* append this input */ + dev->inputs = eina_list_append(dev->inputs, input); + + return EINA_TRUE; } static void @@ -879,26 +904,20 @@ _e_input_device_input_thread_init_udev_backend(E_Input_Backend *input) } /* public functions */ -EINTERN Eina_Bool -e_input_device_input_create_libinput_udev(E_Input_Device *dev) +EINTERN E_Input_Backend * +e_input_backend_create_libinput_udev() { E_Input_Backend *input; char *env = NULL; int buf_size = 0; int res = 0; - /* check for valid device */ - EINA_SAFETY_ON_NULL_RETURN_VAL(dev, EINA_FALSE); - /* try to allocate space for new input structure */ if (!(input = calloc(1, sizeof(E_Input_Backend)))) { - return EINA_FALSE; + return NULL; } - /* set reference for parent device */ - input->dev = dev; - input->backend = E_INPUT_LIBINPUT_BACKEND_UDEV; input->log_disable = EINA_FALSE; input->log_use_eina = EINA_FALSE; @@ -937,7 +956,7 @@ e_input_device_input_create_libinput_udev(E_Input_Device *dev) if (e_input_thread_mode_get()) { e_input_backend_thread_input_backend_set(input); - return EINA_TRUE; + return input; } if (e_input_thread_enabled_get()) @@ -949,7 +968,7 @@ e_input_device_input_create_libinput_udev(E_Input_Device *dev) goto err; } - return EINA_TRUE; + return input; } if (!e_input_libinput_context_create(input)) @@ -962,19 +981,16 @@ e_input_device_input_create_libinput_udev(E_Input_Device *dev) goto err; } - /* append this input */ - dev->inputs = eina_list_append(dev->inputs, input); - /* process pending events */ e_input_backend_events_process(input); - return EINA_TRUE; + return input; err: if (input->libinput) libinput_unref(input->libinput); free(input); - return EINA_FALSE; + return NULL; } EINTERN Eina_Bool @@ -1128,40 +1144,19 @@ _e_input_device_input_thread_init_path_backend(E_Input_Backend *input) return !!(input->thread); } -EINTERN Eina_Bool -e_input_device_input_create_libinput_path(E_Input_Device *dev) +EINTERN E_Input_Backend * +e_input_backend_create_libinput_path(int ndevices) { E_Input_Backend *input; struct libinput_device *device; - int ndevices = 0; char *env; - /* check for valid device */ - EINA_SAFETY_ON_NULL_RETURN_VAL(dev, EINA_FALSE); - - env = e_util_env_get("PATH_DEVICES_NUM"); - if (env) - { - ndevices = atoi(env); - E_FREE(env); - } - - if (ndevices <= 0 || ndevices >= INT_MAX) - { - return EINA_TRUE; - } - - INF("PATH_DEVICES_NUM : %d", ndevices); - /* try to allocate space for new input structure */ if (!(input = calloc(1, sizeof(E_Input_Backend)))) { - return EINA_FALSE; + return NULL; } - /* set reference for parent device */ - input->dev = dev; - input->backend = E_INPUT_LIBINPUT_BACKEND_PATH; input->path_ndevices = ndevices; input->log_disable = EINA_FALSE; @@ -1189,7 +1184,7 @@ e_input_device_input_create_libinput_path(E_Input_Device *dev) goto err; } - return EINA_TRUE; + return input; } /* try to create libinput context */ @@ -1235,19 +1230,16 @@ e_input_device_input_create_libinput_path(E_Input_Device *dev) goto err; } - /* append this input */ - dev->inputs = eina_list_append(dev->inputs, input); - /* process pending events */ e_input_backend_events_process(input); - return EINA_TRUE; + return input; err: if (input->libinput) libinput_unref(input->libinput); free(input); - return EINA_FALSE; + return NULL; } void diff --git a/src/bin/inputmgr/e_input_device_intern.h b/src/bin/inputmgr/e_input_device_intern.h index a72ef46c61..27abdf3a72 100644 --- a/src/bin/inputmgr/e_input_device_intern.h +++ b/src/bin/inputmgr/e_input_device_intern.h @@ -3,6 +3,7 @@ #include "e_intern.h" #include "e_input_intern.h" +#include "e_input_backend_intern.h" struct _E_Input_Device { @@ -39,8 +40,8 @@ EINTERN void e_input_device_keyboard_cached_keymap_set(struct xkb_key EINTERN Eina_Bool e_input_device_keyboard_remap_set(E_Input_Device *dev, int *from_keys, int *to_keys, int num); EINTERN Eina_Bool e_input_device_input_backend_create(E_Input_Device *dev, E_Input_Libinput_Backend backend); -EINTERN Eina_Bool e_input_device_input_create_libinput_udev(E_Input_Device *dev); -EINTERN Eina_Bool e_input_device_input_create_libinput_path(E_Input_Device *dev); +EINTERN E_Input_Backend *e_input_backend_create_libinput_udev(void); +EINTERN E_Input_Backend *e_input_backend_create_libinput_path(int ndevices); EINTERN Eina_Bool e_input_device_libinput_log_level_set(E_Input_Device *dev, unsigned int level); EINTERN void e_input_device_pointer_xy_get(E_Input_Device *dev, int *x, int *y);