/* 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);
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) {
server_finish(&server);
rcxml_finish();
+ menu_finish(server.rootmenu);
pango_cairo_font_map_set_default(NULL);
return 0;
}
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)
{