From: duna.oh Date: Thu, 2 Jan 2025 10:36:18 +0000 (+0900) Subject: e_input_thread_client: add a new API for setting zone_id X-Git-Tag: accepted/tizen/unified/20250106.154429~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=ce87fd9166d585202f15ce9811d937d263959d1b;p=platform%2Fupstream%2Fenlightenment.git e_input_thread_client: add a new API for setting zone_id Change-Id: Ief720f5d8fff95b0d92ff2e1236c7c478f78160b --- diff --git a/src/bin/inputmgr/e_input_thread_client.c b/src/bin/inputmgr/e_input_thread_client.c index 0d45fdd5ae..e94783939b 100644 --- a/src/bin/inputmgr/e_input_thread_client.c +++ b/src/bin/inputmgr/e_input_thread_client.c @@ -17,6 +17,7 @@ struct _E_Input_Thread_Client Eina_Bool is_cursor; Eina_Bool mouse_in; Eina_Bool pointer_enter_sent; + int zone_id; Eina_Stringshare *icccm_name; Eina_Stringshare *netwm_name; Eina_Stringshare *icccm_title; @@ -695,3 +696,18 @@ e_input_thread_client_pointer_enter_sent_get(E_Input_Thread_Client *iec) return iec->pointer_enter_sent; } + +EINTERN void e_input_thread_client_zone_id_set(E_Input_Thread_Client *iec, int zone_id) +{ + EINA_SAFETY_ON_NULL_RETURN(iec); + + iec->zone_id = zone_id; + ICINF("[%s] iec(%p), ec(%p), zone_id(%d)\n", __func__, iec, iec->ec, iec->zone_id); +} + +EINTERN int e_input_thread_client_zone_id_get(E_Input_Thread_Client *iec) +{ + EINA_SAFETY_ON_NULL_RETURN_VAL(iec, -1); + + return iec->zone_id; +} diff --git a/src/bin/inputmgr/e_input_thread_client_intern.h b/src/bin/inputmgr/e_input_thread_client_intern.h index 8d72c4b3f8..dd90f42b51 100644 --- a/src/bin/inputmgr/e_input_thread_client_intern.h +++ b/src/bin/inputmgr/e_input_thread_client_intern.h @@ -20,6 +20,7 @@ typedef struct bool is_video; Eina_Bool deleted; Eina_Bool is_cursor; + int zone_id; Evas_Object *frame; int x, y, w, h; @@ -88,4 +89,7 @@ EINTERN Eina_Bool e_input_thread_client_mouse_in_get(E_Input_Thread_Client *ec); EINTERN void e_input_thread_client_pointer_enter_sent_set(E_Input_Thread_Client *iec, Eina_Bool sent); EINTERN Eina_Bool e_input_thread_client_pointer_enter_sent_get(E_Input_Thread_Client *iec); +EINTERN void e_input_thread_client_zone_id_set(E_Input_Thread_Client *iec, int zone_id); +EINTERN int e_input_thread_client_zone_id_get(E_Input_Thread_Client *iec); + #endif diff --git a/src/bin/windowmgr/e_policy_zone.c b/src/bin/windowmgr/e_policy_zone.c index a888640d72..1e9ceb0a78 100644 --- a/src/bin/windowmgr/e_policy_zone.c +++ b/src/bin/windowmgr/e_policy_zone.c @@ -255,10 +255,22 @@ _e_policy_zone_client_set(E_Zone *zone, E_Client *ec) e_zone_client_set_event_emit(zone, ec); } +static void +_e_policy_wl_input_thread_zone_id_set(void *data) +{ + E_Input_Thread_Request_EClient_Data *ec_data = data; + EINA_SAFETY_ON_NULL_RETURN(ec_data); + + ICINF("[input thread|%s] ec(%p), zone_id(%d)\n", __func__, ec_data->ec, ec_data->zone_id); + e_input_thread_client_zone_id_set(e_input_thread_client_get(ec_data->ec), ec_data->zone_id); +} + static void _e_policy_zone_client_data_set(E_Zone *zone, E_Client *ec) { E_Zone *data; + E_Input_Thread_Request_EClient_Data ec_data; + memset(&ec_data, 0, sizeof(E_Input_Thread_Request_EClient_Data)); data = e_view_data_get(e_view_client_view_get(e_client_view_get(ec)), ZONE_EC_DATA_KEY); if (data) @@ -273,6 +285,13 @@ _e_policy_zone_client_data_set(E_Zone *zone, E_Client *ec) } e_view_data_set(e_view_client_view_get(e_client_view_get(ec)), ZONE_EC_DATA_KEY, zone); + if (e_input_thread_check_client_cloning_needed()) + { + ec_data.ec = ec; + ec_data.zone_id = zone->id; + ICINF("[%s] ec(%p), zone_id(%d)\n", __func__, ec, zone->id); + e_input_backend_thread_safe_call(_e_policy_wl_input_thread_zone_id_set, &ec_data, sizeof(E_Input_Thread_Request_EClient_Data)); + } } static void