e_client: fix bug NULL surface is delivered in e_client_new 96/310596/1
authorJihoon Kim <jihoon48.kim@samsung.com>
Thu, 2 May 2024 09:56:56 +0000 (18:56 +0900)
committerTizen Window System <tizen.windowsystem@gmail.com>
Thu, 2 May 2024 10:48:25 +0000 (19:48 +0900)
Change-Id: I9b012e72a8eb7fce0a991597ee2006154e0b0a64
Signed-off-by: Jihoon Kim <jihoon48.kim@samsung.com>
src/bin/e_client.c

index 907dc6d9dc83aef256f49d0ea237c1e3175bcf82..c17ee8e1b058e05f2cb9a3129085e15e20f50656 100644 (file)
@@ -3342,6 +3342,19 @@ _e_input_thread_client_new(void *data)
    e_input_thread_client_new(ec_data->ec, ec_data->wl_surface);
 }
 
+static void
+_e_client_input_thread_clone_new(E_Client *ec)
+{
+   E_Input_Thread_Request_EClient_Data ec_new_data;
+   memset(&ec_new_data, 0, sizeof(E_Input_Thread_Request_EClient_Data));
+
+   ec_new_data.ec = ec;
+   ec_new_data.wl_surface = ec->comp_data ? ec->comp_data->wl_surface : NULL;
+
+   INF("[%s] ec(%p), surface(%p)\n", __func__, ec, ec_new_data.wl_surface);
+   e_input_thread_safe_call(_e_input_thread_client_new, &ec_new_data, sizeof(E_Input_Thread_Request_EClient_Data));
+}
+
 E_API E_Client *
 e_client_new(E_Pixmap *cp, int first_map, int internal)
 {
@@ -3362,13 +3375,6 @@ e_client_new(E_Pixmap *cp, int first_map, int internal)
         return NULL;
      }
 
-   E_Input_Thread_Request_EClient_Data ec_new_data;
-   memset(&ec_new_data, 0, sizeof(E_Input_Thread_Request_EClient_Data));
-
-   ec_new_data.ec = ec;
-   ec_new_data.wl_surface = ec->comp_data ? ec->comp_data->wl_surface : NULL;
-   INF("[%s] ec(%p), surface(%p)\n", __func__, ec, ec_new_data.wl_surface);
-   e_input_thread_safe_call(_e_input_thread_client_new, &ec_new_data, sizeof(E_Input_Thread_Request_EClient_Data));
 
    uuid_generate(ec->uuid);
 
@@ -3421,6 +3427,8 @@ e_client_new(E_Pixmap *cp, int first_map, int internal)
         return NULL;
      }
 
+   _e_client_input_thread_clone_new(ec);
+
    _e_client_aux_hint_eval(ec);
 
    ec->icccm.title = NULL;