e_comp_wl_tizen_hwc: Modify tizen_hwc_mgr 52/317952/1
authorTaeHyeon Jeong <thyeon.jeong@samsung.com>
Mon, 23 Sep 2024 01:43:58 +0000 (10:43 +0900)
committerTizen Window System <tizen.windowsystem@gmail.com>
Mon, 23 Sep 2024 04:10:07 +0000 (13:10 +0900)
- Add tizen_hwc_mgr NULL check
- Remove wrapper free code in tizen_hwc_mgr_cb

Change-Id: Ic39f9ee11d903c573661ba2c2746880ed852df1d

src/bin/server/e_comp_wl_tizen_hwc.c

index 589346d..eecf008 100644 (file)
@@ -53,8 +53,7 @@ _tizen_hwc_commit_feedback_wrapper_free(Ds_Tizen_Hwc_Commit_Feedback_Wrapper *wr
    ELOGF("TIZEN-HWC", "Destroy Commit Feedback.", wrapper->ec);
 
    if ((wrapper->dequeued_list) && (wrapper->dequeued_list->feedbacks))
-     wrapper->dequeued_list->feedbacks = eina_list_remove(wrapper->dequeued_list->feedbacks,
-                                                                      wrapper);
+     wrapper->dequeued_list->feedbacks = eina_list_remove(wrapper->dequeued_list->feedbacks, wrapper);
 
    if (wrapper->ec)
      e_object_unref(E_OBJECT(wrapper->ec));
@@ -71,7 +70,9 @@ _tizen_hwc_commit_feedback_wrapper_free(Ds_Tizen_Hwc_Commit_Feedback_Wrapper *wr
    if (wrapper->listener.destroy.notify)
      wl_list_remove(&wrapper->listener.destroy.link);
 
-   tizen_hwc_mgr->ds_tizen_hwc_commit_feedback_list = eina_list_remove(tizen_hwc_mgr->ds_tizen_hwc_commit_feedback_list, wrapper);
+   if (tizen_hwc_mgr)
+      tizen_hwc_mgr->ds_tizen_hwc_commit_feedback_list = eina_list_remove(tizen_hwc_mgr->ds_tizen_hwc_commit_feedback_list, wrapper);
+
    E_FREE(wrapper);
 }
 
@@ -193,6 +194,8 @@ _e_comp_wl_tizen_hwc_cb_create_commit_feedback(struct wl_listener *listener, voi
    E_Client *ec;
    Ds_Tizen_Hwc_Commit_Feedback_Wrapper *wrapper;
 
+   EINA_SAFETY_ON_NULL_RETURN(tizen_hwc_mgr);
+
    surface = ds_tizen_hwc_commit_feedback_get_surface(hwc_commit_feedback);
    EINA_SAFETY_ON_NULL_RETURN(surface);
 
@@ -236,21 +239,12 @@ _e_comp_wl_tizen_hwc_cb_create_commit_feedback(struct wl_listener *listener, voi
 static void
 _e_comp_wl_tizen_hwc_mgr_cb_destroy(struct wl_listener *listener, void *data)
 {
-   Ds_Tizen_Hwc_Commit_Feedback_Wrapper *wrapper;
-   const Eina_List *l, *ll;
-
-   ELOGF("TIZEN-HWC", "Shutdown Tizen HWC.", NULL);
-
-   if (!e_comp_wl) return;
-   if (!tizen_hwc_mgr) return;
-
-   EINA_LIST_FOREACH_SAFE(tizen_hwc_mgr->ds_tizen_hwc_commit_feedback_list, l, ll, wrapper)
-     _tizen_hwc_commit_feedback_wrapper_free(wrapper);
-
-   tizen_hwc_mgr->ds_tizen_hwc_commit_feedback_list = NULL;
    wl_list_remove(&tizen_hwc_mgr->destroy.link);
    wl_list_remove(&tizen_hwc_mgr->new_commit.link);
+
    E_FREE(tizen_hwc_mgr);
+
+   ELOGF("TIZEN-HWC", "Shutdown Tizen HWC by display destruction", NULL);
 }
 
 EINTERN Eina_Bool
@@ -275,7 +269,7 @@ e_comp_wl_tizen_hwc_init(void)
         return EINA_FALSE;
      }
 
-   tizen_hwc_mgr->hwc = ds_tizen_hwc_create(e_comp_wl->wl.disp);
+   tizen_hwc_mgr->hwc = ds_tizen_hwc_create(comp_wl->wl.disp);
    if (!tizen_hwc_mgr->hwc)
      {
         ERR("Could not create global for tizen_hwc: %m");
@@ -305,6 +299,8 @@ e_comp_wl_tizen_hwc_committed(void)
    const Eina_List *l, *ll;
    Ds_Tizen_Hwc_Commit_Feedback_Wrapper* wrapper;
 
+   EINA_SAFETY_ON_NULL_RETURN(tizen_hwc_mgr);
+
    EINA_LIST_FOREACH_SAFE(tizen_hwc_mgr->ds_tizen_hwc_commit_feedback_list, l, ll, wrapper)
      {
         if (wrapper->pending) continue;
@@ -323,6 +319,8 @@ e_comp_wl_tizen_hwc_discarded(void)
    const Eina_List *l, *ll;
    Ds_Tizen_Hwc_Commit_Feedback_Wrapper* wrapper;
 
+   EINA_SAFETY_ON_NULL_RETURN(tizen_hwc_mgr);
+
    EINA_LIST_FOREACH_SAFE(tizen_hwc_mgr->ds_tizen_hwc_commit_feedback_list, l, ll, wrapper)
      {
         if (wrapper->pending) continue;
@@ -359,6 +357,7 @@ e_comp_wl_tizen_hwc_feedback_list_dequeue(E_Client *ec, E_Comp_Wl_Tizen_Hwc_Feed
 
    EINA_SAFETY_ON_NULL_RETURN_VAL(ec, EINA_FALSE);
    EINA_SAFETY_ON_NULL_RETURN_VAL(feedback_list, EINA_FALSE);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(tizen_hwc_mgr, EINA_FALSE);
 
    EINA_LIST_FOREACH(tizen_hwc_mgr->ds_tizen_hwc_commit_feedback_list, l, wrapper)
      {