From cf39d1bf43130bfd6cb35becbb74760962382447 Mon Sep 17 00:00:00 2001 From: Jihoon Kim Date: Mon, 6 Nov 2023 17:39:23 +0900 Subject: [PATCH] e_input: add input thread start hook Change-Id: Id5fb47aa785579b5fa188af560a26348976c4c88 Signed-off-by: Jihoon Kim --- src/bin/e_input.c | 13 +++++++++++++ src/bin/e_input.h | 4 ++++ src/bin/e_input_inputs.c | 8 ++++++-- 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/src/bin/e_input.c b/src/bin/e_input.c index 524f6cd..1a7aad9 100644 --- a/src/bin/e_input.c +++ b/src/bin/e_input.c @@ -5,9 +5,12 @@ static int _e_input_hooks_delete = 0; static int _e_input_hooks_walking = 0; +static pid_t _e_input_thread_id = 0; + static Eina_Inlist *_e_input_hooks[] = { [E_INPUT_HOOK_POINTER_WARP] = NULL, + [E_INPUT_HOOK_INPUT_THREAD_START] = NULL, }; int _e_input_init_count; @@ -386,4 +389,14 @@ void e_input_flush_keyboard_share_events(void) { ecore_main_loop_thread_safe_call_async(_keyboard_share_key_event_flush_cb, NULL); +} + +E_API pid_t e_input_thread_id_get() +{ + return _e_input_thread_id; +} + +EINTERN void e_input_thread_id_set(pid_t tid) +{ + _e_input_thread_id = tid; } \ No newline at end of file diff --git a/src/bin/e_input.h b/src/bin/e_input.h index 27efb3a..08b5282 100644 --- a/src/bin/e_input.h +++ b/src/bin/e_input.h @@ -22,6 +22,7 @@ EINTERN extern int E_EVENT_INPUT_DISABLED; typedef enum _E_Input_Hook_Point { E_INPUT_HOOK_POINTER_WARP, + E_INPUT_HOOK_INPUT_THREAD_START, E_INPUT_HOOK_LAST } E_Input_Hook_Point; @@ -170,5 +171,8 @@ E_API Eina_Bool e_input_device_mouse_accel_enable_set(const char *device_name, E EINTERN void e_input_flush_keyboard_share_events(void); +E_API pid_t e_input_thread_id_get(); +EINTERN void e_input_thread_id_set(pid_t tid); + #endif #endif diff --git a/src/bin/e_input_inputs.c b/src/bin/e_input_inputs.c index ffa7646..c67b439 100644 --- a/src/bin/e_input_inputs.c +++ b/src/bin/e_input_inputs.c @@ -663,8 +663,6 @@ input_thread_start(void *data, Ecore_Thread *th) GMainContext *context = NULL; InputEventSource *input_event_source = NULL; - INF("input thread start"); - if (!(input = data)) return; eina_thread_name_set(eina_thread_self(), "input-thread"); @@ -693,6 +691,12 @@ input_thread_start(void *data, Ecore_Thread *th) e_keyrouter_input_handler_add(); + e_input_thread_id_set(gettid()); + + _e_input_hook_call(E_INPUT_HOOK_INPUT_THREAD_START, NULL); + + INF("input thread start (%d)", e_input_thread_id_get()); + g_main_loop_run(input->input_thread_loop); } -- 2.7.4