e_client: postpone destroying ec during traversing ec list 57/302157/2
authorJihoon Kim <jihoon48.kim@samsung.com>
Thu, 30 Nov 2023 08:19:06 +0000 (17:19 +0900)
committerJunkyeong Kim <jk0430.kim@samsung.com>
Fri, 1 Dec 2023 07:29:19 +0000 (07:29 +0000)
Change-Id: I09c098d03addd932b9e7df2ab1c86237261bbcce
Signed-off-by: Jihoon Kim <jihoon48.kim@samsung.com>
src/bin/e_client.c

index a9edcbd..e40fa83 100644 (file)
@@ -943,6 +943,8 @@ _e_client_private_finish(E_Client *ec)
 static void
 _e_client_free(E_Client *ec)
 {
+   g_rec_mutex_lock(&e_comp->ec_list_mutex);
+
    e_comp_object_redirected_set(ec->frame, 0);
    e_comp_object_render_update_del(ec->frame);
 
@@ -1011,6 +1013,8 @@ _e_client_free(E_Client *ec)
 
    _e_client_private_finish(ec);
    free(ec);
+
+   g_rec_mutex_unlock(&e_comp->ec_list_mutex);
 }
 
 static void
@@ -1019,6 +1023,8 @@ _e_client_del(E_Client *ec)
    E_Client *child;
    E_Pixmap_Type type;
 
+   g_rec_mutex_lock(&e_comp->ec_list_mutex);
+
    ec->changed = 0;
 
    if (ec == e_comp_object_dim_client_get())
@@ -1090,6 +1096,8 @@ _e_client_del(E_Client *ec)
    _e_client_resize_object_del(ec);
 
    e_comp_visibility_calculation_set(EINA_TRUE);
+
+   g_rec_mutex_unlock(&e_comp->ec_list_mutex);
 }
 
 ///////////////////////////////////////////