fix potentially memory leak after deleting window. 31/59831/1
authorSeunghun Lee <shiin.lee@samsung.com>
Wed, 17 Feb 2016 06:57:47 +0000 (15:57 +0900)
committerSeunghun Lee <shiin.lee@samsung.com>
Fri, 19 Feb 2016 02:26:05 +0000 (11:26 +0900)
Change-Id: Ie0ba14d0f3482797e4a30377a39f64589084a9b7

src/efl_util.c

index ba1b8313ebfd6caeee8c957691f759fa54f428dc..3094d661403b11d7baf04b9fc810116e80779a6a 100644 (file)
@@ -625,6 +625,18 @@ _cb_window_show(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, v
    tizen_policy_set_notification_level(_eflutil.wl.policy.proto,
                                        surface, (int)lv_info->level);
 }
+
+static void
+_cb_window_del(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
+{
+   Efl_Util_Wl_Surface_Lv_Info *lv_info;
+
+   lv_info = data;
+   if (EINA_UNLIKELY(!lv_info))
+     return;
+
+   eina_hash_del(_eflutil.wl.policy.hash_noti_lv, &lv_info->surface, lv_info);
+}
 #endif /* end of WAYLAND */
 
 API int
@@ -714,6 +726,8 @@ efl_util_set_notification_window_level(Evas_Object *window,
 
         evas_object_event_callback_add(window, EVAS_CALLBACK_SHOW,
                                        _cb_window_show, lv_info);
+        evas_object_event_callback_add(window, EVAS_CALLBACK_DEL,
+                                       _cb_window_del, lv_info);
      }
    else
      {