From 1be36ca445d41cb46e6c0d41c6a7f3bc67b817a4 Mon Sep 17 00:00:00 2001 From: Seunghun Lee Date: Fri, 25 Apr 2025 13:54:39 +0900 Subject: [PATCH] xdg_shell_v6: Split out _toplevel_create This patch extracts the implementation of creating toplevel from _toplevel_add function to improve readability. Change-Id: Ifae97247f97a6df829c94fdc962d0f2259cfe04e --- src/bin/server/e_desktop_xdg_shell_v6.c | 52 +++++++++++++++---------- 1 file changed, 32 insertions(+), 20 deletions(-) diff --git a/src/bin/server/e_desktop_xdg_shell_v6.c b/src/bin/server/e_desktop_xdg_shell_v6.c index 8296c41f37..6891e43c68 100644 --- a/src/bin/server/e_desktop_xdg_shell_v6.c +++ b/src/bin/server/e_desktop_xdg_shell_v6.c @@ -456,9 +456,24 @@ _toplevel_listener_finish(E_Desktop_Xdg_Toplevel_V6 *toplevel) } static void -_toplevel_init(E_Desktop_Xdg_Toplevel_V6 *toplevel) +_toplevel_desktop_surface_interface_init(E_Desktop_Surface_Interface *iface) { - struct ds_xdg_toplevel_v6 *ds_toplevel = toplevel->ds_toplevel; + iface->configure_send = _toplevel_configure_send; + iface->configure = NULL; + iface->map = NULL; + iface->unmap = NULL; +} + +static void +_toplevel_init(E_Desktop_Xdg_Toplevel_V6 *toplevel, struct ds_xdg_surface_v6 *ds_xdg_surface) +{ + struct ds_xdg_toplevel_v6 *ds_toplevel = ds_xdg_surface->toplevel; + E_Surface *surface = e_surface_from_ds_surface(ds_xdg_surface->ds_surface); + + toplevel->ds_toplevel = ds_toplevel; + + _toplevel_desktop_surface_interface_init(&toplevel->impl); + e_desktop_toplevel_init(&toplevel->base, &toplevel->impl, surface, ds_xdg_surface->resource); _toplevel_title_update(toplevel); _toplevel_app_id_update(toplevel); @@ -470,39 +485,36 @@ _toplevel_init(E_Desktop_Xdg_Toplevel_V6 *toplevel) e_desktop_toplevel_fullscreen_request(&toplevel->base); } -static void -_toplevel_desktop_surface_interface_init(E_Desktop_Surface_Interface *iface) +static E_Desktop_Xdg_Toplevel_V6 * +_toplevel_create(struct ds_xdg_surface_v6 *ds_xdg_surface) { - iface->configure_send = _toplevel_configure_send; - iface->configure = NULL; - iface->map = NULL; - iface->unmap = NULL; + E_Desktop_Xdg_Toplevel_V6 *toplevel; + + toplevel = E_NEW(E_Desktop_Xdg_Toplevel_V6, 1); + if (!toplevel) + return NULL; + + _toplevel_init(toplevel, ds_xdg_surface); + _toplevel_listener_init(toplevel); + + LOG("Create E_Desktop_Xdg_Toplevel_V6(%p)", toplevel); + + return toplevel; } static void _toplevel_add(E_Desktop_Xdg_Shell_V6 *shell, struct ds_xdg_surface_v6 *ds_xdg_surface) { E_Desktop_Xdg_Toplevel_V6 *toplevel; - E_Surface *surface = e_surface_from_ds_surface(ds_xdg_surface->ds_surface); - toplevel = E_NEW(E_Desktop_Xdg_Toplevel_V6, 1); + toplevel = _toplevel_create(ds_xdg_surface); if (!toplevel) { ERR("Could not create E_Desktop_Xdg_Toplevel_V6"); return; } - toplevel->ds_toplevel = ds_xdg_surface->toplevel; - - _toplevel_desktop_surface_interface_init(&toplevel->impl); - e_desktop_toplevel_init(&toplevel->base, &toplevel->impl, surface, ds_xdg_surface->resource); - - _toplevel_init(toplevel); - _toplevel_listener_init(toplevel); - e_desktop_shell_toplevel_add(shell->desktop_shell, &toplevel->base); - - ELOGF("XDG6", "Created E_Desktop_Xdg_Toplevel_V6(%p)", e_surface_ec_get(surface), toplevel); } static void -- 2.34.1