From 096e93739632e6cb1903bf64f7c22580af3256af Mon Sep 17 00:00:00 2001 From: Inhong Han Date: Fri, 17 May 2024 18:59:15 +0900 Subject: [PATCH] e_input_backend: Reduce the size of memory allocated when receiving data Change-Id: I36bfea50823fdaa8a5aad95a6d95b20485ea39c4 --- src/bin/core/e_client.c | 66 ++++++++++++------------- src/bin/inputmgr/e_input_thread_client_intern.h | 9 ++-- 2 files changed, 37 insertions(+), 38 deletions(-) diff --git a/src/bin/core/e_client.c b/src/bin/core/e_client.c index b8cc2ad..b71eea9 100644 --- a/src/bin/core/e_client.c +++ b/src/bin/core/e_client.c @@ -7086,34 +7086,32 @@ e_client_shell_ping(E_Client *ec) static void _e_input_thread_client_icccm_name_set(void *data) { - E_Input_Thread_Request_EClient_Data *ec_data = data; - EINA_SAFETY_ON_NULL_RETURN(ec_data); + E_Input_Thread_Request_String_Data *icccm_name = data; + EINA_SAFETY_ON_NULL_RETURN(icccm_name); - INF("[input thread|%s] ec(%p), name(%s)\n", __func__, ec_data->ec, ec_data->icccm_name); - e_input_thread_client_icccm_name_set(e_input_thread_client_get(ec_data->ec), ec_data->icccm_name); + INF("[input thread|%s] ec(%p), name(%s)\n", __func__, icccm_name->ec, icccm_name->data); + e_input_thread_client_icccm_name_set(e_input_thread_client_get(icccm_name->ec), icccm_name->data); } EINTERN void e_client_icccm_name_set(E_Client *ec, const char *name) { - E_Input_Thread_Request_EClient_Data ec_data; - memset(&ec_data, 0, sizeof(E_Input_Thread_Request_EClient_Data)); + E_Input_Thread_Request_String_Data icccm_name; + + memset(&icccm_name, 0, sizeof(E_Input_Thread_Request_String_Data)); EINA_SAFETY_ON_NULL_RETURN(ec); if (eina_stringshare_replace(&ec->icccm.name, name)) { ec->changes.title = EINA_TRUE; - - ec_data.ec = ec; - ec_data.wl_surface = ec->comp_data ? ec->comp_data->wl_surface : NULL; - ec_data.is_video = EINA_FALSE; + icccm_name.ec = ec; if (name) - strncpy(ec_data.icccm_name, name, sizeof(ec_data.icccm_name)-1); + strncpy(icccm_name.data, name, sizeof(icccm_name.data)-1); - INF("[%s] ec(%p), surface(%p), name(%s)\n", __func__, ec, ec_data.wl_surface, name); - e_input_backend_thread_safe_call(_e_input_thread_client_icccm_name_set, &ec_data, sizeof(E_Input_Thread_Request_EClient_Data)); + INF("[%s] ec(%p), name(%s)\n", __func__, ec, name); + e_input_backend_thread_safe_call(_e_input_thread_client_icccm_name_set, &icccm_name, sizeof(E_Input_Thread_Request_String_Data)); } } @@ -7128,31 +7126,30 @@ e_client_icccm_name_get(E_Client *ec) static void _e_input_thread_client_netwm_name_set(void *data) { - E_Input_Thread_Request_EClient_Data *ec_data = data; - EINA_SAFETY_ON_NULL_RETURN(ec_data); + E_Input_Thread_Request_String_Data *netwm_name = data; + EINA_SAFETY_ON_NULL_RETURN(netwm_name); - INF("[input thread|%s] ec(%p), name(%s)\n", __func__, ec_data->ec, ec_data->netwm_name); - e_input_thread_client_netwm_name_set(e_input_thread_client_get(ec_data->ec), ec_data->netwm_name); + INF("[input thread|%s] ec(%p), name(%s)\n", __func__, netwm_name->ec, netwm_name->data); + e_input_thread_client_netwm_name_set(e_input_thread_client_get(netwm_name->ec), netwm_name->data); } EINTERN void e_client_netwm_name_set(E_Client *ec, const char *name) { - E_Input_Thread_Request_EClient_Data ec_data = { NULL, NULL, EINA_FALSE, EINA_FALSE }; - memset(&ec_data, 0, sizeof(E_Input_Thread_Request_EClient_Data)); + E_Input_Thread_Request_String_Data netwm_name; + memset(&netwm_name, 0, sizeof(E_Input_Thread_Request_String_Data)); EINA_SAFETY_ON_NULL_RETURN(ec); eina_stringshare_replace(&ec->netwm.name, name); - ec_data.ec = ec; - ec_data.wl_surface = ec->comp_data ? ec->comp_data->wl_surface : NULL; + netwm_name.ec = ec; if (name) - strncpy(ec_data.netwm_name, name, sizeof(ec_data.netwm_name)-1); + strncpy(netwm_name.data, name, sizeof(netwm_name.data)-1); - INF("[%s] ec(%p), surface(%p), name(%s)\n", __func__, ec, ec_data.wl_surface, ec_data.netwm_name); - e_input_backend_thread_safe_call(_e_input_thread_client_netwm_name_set, &ec_data, sizeof(E_Input_Thread_Request_EClient_Data)); + INF("[%s] ec(%p), name(%s)\n", __func__, ec, name); + e_input_backend_thread_safe_call(_e_input_thread_client_netwm_name_set, &netwm_name, sizeof(E_Input_Thread_Request_String_Data)); } E_API Eina_Stringshare * @@ -7166,32 +7163,31 @@ e_client_netwm_name_get(E_Client *ec) static void _e_input_thread_client_icccm_title_set(void *data) { - E_Input_Thread_Request_EClient_Data *ec_data = data; - EINA_SAFETY_ON_NULL_RETURN(ec_data); + E_Input_Thread_Request_String_Data *icccm_title = data; + EINA_SAFETY_ON_NULL_RETURN(icccm_title); - INF("[input thread|%s] ec(%p), title(%s)\n", __func__, ec_data->ec, ec_data->icccm_title); - e_input_thread_client_icccm_title_set(e_input_thread_client_get(ec_data->ec), ec_data->icccm_title); + INF("[input thread|%s] ec(%p), title(%s)\n", __func__, icccm_title->ec, icccm_title->data); + e_input_thread_client_icccm_title_set(e_input_thread_client_get(icccm_title->ec), icccm_title->data); } EINTERN void e_client_icccm_title_set(E_Client *ec, const char *title) { - E_Input_Thread_Request_EClient_Data ec_data; - memset(&ec_data, 0, sizeof(E_Input_Thread_Request_EClient_Data)); + E_Input_Thread_Request_String_Data icccm_title; + memset(&icccm_title, 0, sizeof(E_Input_Thread_Request_String_Data)); EINA_SAFETY_ON_NULL_RETURN(ec); if (eina_stringshare_replace(&ec->icccm.title, title)) { ec->changes.title = EINA_TRUE; + icccm_title.ec = ec; - ec_data.ec = ec; - ec_data.wl_surface = ec->comp_data ? ec->comp_data->wl_surface : NULL; if (title) - strncpy(ec_data.icccm_title, title, sizeof(ec_data.icccm_title)-1); + strncpy(icccm_title.data, title, sizeof(icccm_title.data)-1); - INF("[%s] ec(%p), surface(%p)\n", __func__, ec, ec_data.wl_surface); - e_input_backend_thread_safe_call(_e_input_thread_client_icccm_title_set, &ec_data, sizeof(E_Input_Thread_Request_EClient_Data)); + INF("[%s] ec(%p), name(%s)\n", __func__, ec, title); + e_input_backend_thread_safe_call(_e_input_thread_client_icccm_title_set, &icccm_title, sizeof(E_Input_Thread_Request_String_Data)); } } diff --git a/src/bin/inputmgr/e_input_thread_client_intern.h b/src/bin/inputmgr/e_input_thread_client_intern.h index 7fbf922..ab71359 100644 --- a/src/bin/inputmgr/e_input_thread_client_intern.h +++ b/src/bin/inputmgr/e_input_thread_client_intern.h @@ -18,13 +18,16 @@ typedef struct bool is_video; Eina_Bool deleted; Eina_Bool is_cursor; - char icccm_name[1024]; - char netwm_name[1024]; - char icccm_title[1024]; } E_Input_Thread_Request_EClient_Data; typedef struct { + void *ec; + char data[1024]; +} E_Input_Thread_Request_String_Data; + +typedef struct +{ struct wl_client *client; struct wl_resource *resource; struct wl_resource *surface; -- 2.7.4