e_policy_conformant: Add destroy listener delete 59/317259/1
authorJunkyeong Kim <jk0430.kim@samsung.com>
Fri, 27 Dec 2024 06:23:48 +0000 (15:23 +0900)
committerJunkyeong Kim <jk0430.kim@samsung.com>
Fri, 27 Dec 2024 09:51:05 +0000 (09:51 +0000)
In the _conf_cb_part_del, the destroy listener deletion was omitted.
Make _conf_event_listener_del function
and execute this in _conf_cb_part_del and _conf_part_deregister.

Change-Id: I92fb1a863962587cc2dd7644608c26240de2c5dc

src/bin/windowmgr/e_policy_conformant.c

index e998c0a993d2527bb737381fafefa6a31b0ac700..84759e6eba15c74046aeb6eaa5819f78bb8dace3 100644 (file)
@@ -515,13 +515,24 @@ _conf_part_owner_find(E_Client *part, Conformant_Type type)
    return NULL;
 }
 
+static void _conf_event_listener_del(Conformant_Type type)
+{
+   E_View *view;
+
+   view = e_view_client_view_get(e_client_view_get(g_conf->part[type].ec));
+   wl_list_remove(&g_conf->part[type].del_listener.link);
+   e_view_event_listener_del(view, E_VIEW_SHOW, &g_conf->part[type].show_listener);
+   e_view_event_listener_del(view, E_VIEW_HIDE, &g_conf->part[type].hide_listener);
+   e_view_event_listener_del(view, E_VIEW_MOVE, &g_conf->part[type].move_listener);
+   e_view_event_listener_del(view, E_VIEW_RESIZE, &g_conf->part[type].resize_listener);
+}
+
 static void
 _conf_cb_part_del(struct wl_listener *listener, void *data)
 {
    Conformant_Part *conf_part;
    Conformant_Type type;
    Defer_Job *job;
-   E_View *view;
 
    if (!g_conf)
      return;
@@ -532,13 +543,7 @@ _conf_cb_part_del(struct wl_listener *listener, void *data)
    INF("PART %s ec(%p) Deleted", _conf_type_to_str(type), g_conf->part[type].ec);
 
    if (g_conf->part[type].ec)
-     {
-        view = e_view_client_view_get(e_client_view_get(g_conf->part[type].ec));
-        e_view_event_listener_del(view, E_VIEW_SHOW, &g_conf->part[type].show_listener);
-        e_view_event_listener_del(view, E_VIEW_HIDE, &g_conf->part[type].hide_listener);
-        e_view_event_listener_del(view, E_VIEW_MOVE, &g_conf->part[type].move_listener);
-        e_view_event_listener_del(view, E_VIEW_RESIZE, &g_conf->part[type].resize_listener);
-     }
+     _conf_event_listener_del(type);
 
    g_conf->part[type].ec = NULL;
    g_conf->part[type].state.will_hide = EINA_FALSE;
@@ -698,7 +703,6 @@ static void
 _conf_part_deregister(E_Client *ec, Conformant_Type type)
 {
    Defer_Job *job;
-   E_View *view;
 
    if (!g_conf)
      return;
@@ -722,12 +726,8 @@ _conf_part_deregister(E_Client *ec, Conformant_Type type)
    wl_list_remove(&g_conf->part[type].comp_object_hiding.link);
 
    // deregister callback
-   view = e_view_client_view_get(e_client_view_get(ec));
-   wl_list_remove(&g_conf->part[type].del_listener.link);
-   e_view_event_listener_del(view, E_VIEW_SHOW, &g_conf->part[type].show_listener);
-   e_view_event_listener_del(view, E_VIEW_HIDE, &g_conf->part[type].hide_listener);
-   e_view_event_listener_del(view, E_VIEW_MOVE, &g_conf->part[type].move_listener);
-   e_view_event_listener_del(view, E_VIEW_RESIZE, &g_conf->part[type].resize_listener);
+   if (g_conf->part[type].ec)
+     _conf_event_listener_del(type);
 
    g_conf->part[type].type = CONFORMANT_TYPE_MAX;
    g_conf->part[type].ec = NULL;