mirror of
https://codeberg.org/adnano/wmenu.git
synced 2025-10-29 05:40:20 -04:00
Only call render_menu once per frame
An actual surface is not needed to estimate font sizes; a 1x1 image will do, as long as the cairo context has the same options.
This commit is contained in:
parent
260eaba88e
commit
0947765fc9
3 changed files with 16 additions and 3 deletions
5
menu.c
5
menu.c
|
|
@ -34,6 +34,8 @@ struct menu *menu_create(menu_callback callback) {
|
|||
menu->selectionbg = 0x005577ff;
|
||||
menu->selectionfg = 0xeeeeeeff;
|
||||
menu->callback = callback;
|
||||
menu->test_surface = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, 1, 1);
|
||||
menu->test_cairo = cairo_create(menu->test_surface);
|
||||
return menu;
|
||||
}
|
||||
|
||||
|
|
@ -58,6 +60,8 @@ static void free_items(struct menu *menu) {
|
|||
void menu_destroy(struct menu *menu) {
|
||||
free_pages(menu);
|
||||
free_items(menu);
|
||||
cairo_destroy(menu->test_cairo);
|
||||
cairo_surface_destroy(menu->test_surface);
|
||||
free(menu);
|
||||
}
|
||||
|
||||
|
|
@ -374,7 +378,6 @@ static void match_items(struct menu *menu) {
|
|||
|
||||
// Render menu items.
|
||||
void menu_render_items(struct menu *menu) {
|
||||
render_menu(menu);
|
||||
calc_widths(menu);
|
||||
match_items(menu);
|
||||
render_menu(menu);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue