e_policy_visibility: remove wait_buf_attach_grab_list with cloned list 11/266511/1
authorJunseok, Kim <juns.kim@samsung.com>
Wed, 27 Oct 2021 04:43:31 +0000 (13:43 +0900)
committerDoyoun Kang <doyoun.kang@samsung.com>
Sat, 13 Nov 2021 04:21:01 +0000 (13:21 +0900)
Change-Id: Ib3a33f38e94f81fa21d065a7355028cbaa258572

src/bin/e_policy_visibility.c

index e57ac521f255022881df1342f32617a8812fbbac..deade116781a6aff78bd9bbf93b80be6bc6ab6af 100644 (file)
@@ -866,6 +866,7 @@ _e_vis_client_cb_buffer_attach(void *data, int type EINA_UNUSED, void *event)
    E_Client *ec;
    E_Event_Client *ev;
    E_Client *provider_ec;
+   Eina_List *l;
 
    ev = event;
    vc = data;
@@ -887,11 +888,12 @@ _e_vis_client_cb_buffer_attach(void *data, int type EINA_UNUSED, void *event)
         e_comp_object_render(ec->frame);
      }
 
-   EINA_LIST_FREE(vc->wait_buf_attach_grab_list, grab)
+   l = eina_list_clone(vc->wait_buf_attach_grab_list);
+   vc->wait_buf_attach_grab_list = eina_list_free(vc->wait_buf_attach_grab_list);
+   EINA_LIST_FREE(l, grab)
      {
         E_FREE_FUNC(grab, _e_vis_grab_release);
      }
-   vc->wait_buf_attach_grab_list = NULL;
 
    E_FREE_FUNC(vc->buf_attach, ecore_event_handler_del);
 renew:
@@ -1024,11 +1026,14 @@ _e_vis_client_grab_cancel(E_Vis_Client *vc)
         E_FREE_FUNC(vc->grab, _e_vis_grab_release);
 
         E_Vis_Grab *grab;
-        EINA_LIST_FREE(vc->wait_buf_attach_grab_list, grab)
+        Eina_List *l;
+
+        l = eina_list_clone(vc->wait_buf_attach_grab_list);
+        vc->wait_buf_attach_grab_list = eina_list_free(vc->wait_buf_attach_grab_list);
+        EINA_LIST_FREE(l, grab)
           {
              E_FREE_FUNC(grab, _e_vis_grab_release);
           }
-        vc->wait_buf_attach_grab_list = NULL;
 
         return EINA_TRUE;
      }
@@ -1183,15 +1188,17 @@ static void
 _e_vis_client_del(E_Vis_Client *vc)
 {
    E_Vis_Grab *grab;
+   Eina_List *l;
 
    VS_INF(vc->ec, "CLIENT DEL");
 
-   EINA_LIST_FREE(vc->wait_buf_attach_grab_list, grab)
+   l = eina_list_clone(vc->wait_buf_attach_grab_list);
+   vc->wait_buf_attach_grab_list = eina_list_free(vc->wait_buf_attach_grab_list);
+   EINA_LIST_FREE(l, grab)
      {
         VS_INF(vc->ec, "Remove remain grab(%p) in wait_buf_attach list", grab);
         E_FREE_FUNC(grab, _e_vis_grab_release);
      }
-   vc->wait_buf_attach_grab_list = NULL;
 
    E_FREE_FUNC(vc->grab, _e_vis_grab_release);
    E_LIST_REVERSE_FREE(vc->job.grab_list, grab)
@@ -2328,11 +2335,14 @@ e_policy_visibility_client_uniconify_by_visibility_job_cancel(E_Client *ec)
         E_FREE_FUNC(vc->grab, _e_vis_grab_release);
 
         E_Vis_Grab *grab;
-        EINA_LIST_FREE(vc->wait_buf_attach_grab_list, grab)
+        Eina_List *l;
+
+        l = vc->wait_buf_attach_grab_list;
+        vc->wait_buf_attach_grab_list = eina_list_free(vc->wait_buf_attach_grab_list);
+        EINA_LIST_FREE(l, grab)
           {
              E_FREE_FUNC(grab, _e_vis_grab_release);
           }
-        vc->wait_buf_attach_grab_list = NULL;
      }
 
    return ret;