surface_view: Use wl_listener 92/325392/1
authorSeunghun Lee <shiin.lee@samsung.com>
Thu, 22 May 2025 02:28:23 +0000 (11:28 +0900)
committerTizen Window System <tizen.windowsystem@gmail.com>
Tue, 10 Jun 2025 02:33:43 +0000 (11:33 +0900)
Instead of using E_Client_Hook, it uses e_client_destroy_listener_add.

Change-Id: I33e98a11be6b698ab6dbce425364620fe2157ed0

src/bin/server/e_surface_view.c

index abdb5d9afc3feda9c3cd95da5098fd7b42138c97..d61559663f6615b8522cb4a5b8969b1975f47646 100644 (file)
@@ -34,8 +34,7 @@ struct _E_Surface_View
    E_Surface *surface;
    E_Client *ec;
 
-   E_Client_Hook *client_del_hook;
-
+   struct wl_listener ec_destroy;
    struct wl_listener viewport_commit;
    struct wl_listener surface_commit;
 };
@@ -60,7 +59,7 @@ _surface_view_destroy(E_Surface_View *view)
 
    _surface_view_surface_unlink(view);
    e_surface_destroy(view->surface);
-   e_client_hook_del(view->client_del_hook);
+   wl_list_remove(&view->ec_destroy.link);
    free(view);
 }
 
@@ -194,12 +193,9 @@ _launchscreen_ec_find(struct wl_resource *surface_resource)
 }
 
 static void
-_surface_view_cb_client_del(void *data, E_Client *ec)
+_surface_view_cb_ec_destroy(struct wl_listener *listener, void *data)
 {
-   E_Surface_View *view = data;
-
-   if (view->ec != ec)
-     return;
+   E_Surface_View *view = wl_container_of(listener, view, ec_destroy);
 
    TRACE_DS_BEGIN(SURFACE_VIEW:CLIENT DEL CB);
    _surface_view_destroy(view);
@@ -212,7 +208,9 @@ _surface_view_ec_set(E_Surface_View *view, E_Client *ec)
    e_surface_ec_set(view->surface, ec);
 
    view->ec = ec;
-   view->client_del_hook = e_client_hook_add(E_CLIENT_HOOK_DEL, _surface_view_cb_client_del, view);
+
+   view->ec_destroy.notify = _surface_view_cb_ec_destroy;
+   e_client_destroy_listener_add(ec, &view->ec_destroy);
 
    ec->argb = EINA_FALSE;
    ec->redirected = ec->ignored = 1;