From d39b158cec224a1ceab249365f36c3491fd3cfb2 Mon Sep 17 00:00:00 2001 From: Johan Malm Date: Thu, 22 Oct 2020 19:43:27 +0100 Subject: [PATCH] menu: add menu_finish() --- include/menu/menu.h | 1 + src/main.c | 7 ++++--- src/menu/menu.c | 18 ++++++++++++++++++ 3 files changed, 23 insertions(+), 3 deletions(-) diff --git a/include/menu/menu.h b/include/menu/menu.h index bc583c10..2054c338 100644 --- a/include/menu/menu.h +++ b/include/menu/menu.h @@ -22,6 +22,7 @@ struct menu { /* menu_create - create menu */ void menu_init(struct server *server, struct menu *menu); +void menu_finish(struct menu *menu); /* menu_move - move to position (x, y) */ void menu_move(struct menu *menu, int x, int y); diff --git a/src/main.c b/src/main.c index 90528ae4..d30d0cef 100644 --- a/src/main.c +++ b/src/main.c @@ -62,9 +62,9 @@ main(int argc, char *argv[]) theme_read(rc.theme_name); xbm_load(server.renderer); - struct menu menu = { 0 }; - menu_init(&server, &menu); - server.rootmenu = &menu; + struct menu rootmenu = { 0 }; + menu_init(&server, &rootmenu); + server.rootmenu = &rootmenu; session_autostart_init(); if (startup_cmd) { @@ -75,6 +75,7 @@ main(int argc, char *argv[]) server_finish(&server); rcxml_finish(); + menu_finish(server.rootmenu); pango_cairo_font_map_set_default(NULL); return 0; } diff --git a/src/menu/menu.c b/src/menu/menu.c index 048e7d9e..eb9d7263 100644 --- a/src/menu/menu.c +++ b/src/menu/menu.c @@ -87,6 +87,24 @@ menu_init(struct server *server, struct menu *menu) menu_move(menu, 100, 100); } +void +menu_finish(struct menu *menu) +{ + struct menuitem *menuitem, *next; + wl_list_for_each_safe(menuitem, next, &menu->menuitems, link) { + if (menuitem->action) + free(menuitem->action); + if (menuitem->command) + free(menuitem->command); + if (menuitem->active_texture) + free(menuitem->active_texture); + if (menuitem->inactive_texture) + free(menuitem->inactive_texture); + wl_list_remove(&menuitem->link); + free(menuitem); + } +} + void menu_move(struct menu *menu, int x, int y) { -- 2.52.0