diff options
author | 2016-02-17 11:32:06 +0100 | |
---|---|---|
committer | 2016-02-17 11:32:06 +0100 | |
commit | 32630f09aacaec2d9c3eaf384dd80f886f50c3ac (patch) | |
tree | 2d5b9e3e352b9ebee27c58f1db5f4531972b17ea | |
parent | 97f515d8c4f49013a17856893f9c1802867b5711 (diff) |
menu: allocate and draw icons only if available. nw
-rw-r--r-- | src/emu/ui/menu.cpp | 24 | ||||
-rw-r--r-- | src/emu/ui/utils.cpp | 1 | ||||
-rw-r--r-- | src/emu/ui/utils.h | 1 |
3 files changed, 22 insertions, 4 deletions
diff --git a/src/emu/ui/menu.cpp b/src/emu/ui/menu.cpp index fbe7d46e541..8017748321f 100644 --- a/src/emu/ui/menu.cpp +++ b/src/emu/ui/menu.cpp @@ -1309,11 +1309,27 @@ void ui_menu::init_ui(running_machine &machine) star_texture = mrender.texture_alloc(); star_texture->set_bitmap(*star_bitmap, star_bitmap->cliprect(), TEXFORMAT_ARGB32); - // allocates icons bitmap and texture - for (int i = 0; i < MAX_ICONS_RENDER; i++) + // check and allocate icons + file_enumerator path(machine.ui().options().icons_directory()); + const osd_directory_entry *dir; + while ((dir = path.next()) != nullptr) { - icons_bitmap[i] = auto_alloc(machine, bitmap_argb32); - icons_texture[i] = mrender.texture_alloc(); + char drivername[50]; + char *dst = drivername; + const char *src; + + // build a name for it + src = dir->name; + if (*src != 0 && *src != '.') + { + ui_globals::has_icons = true; + for (int i = 0; i < MAX_ICONS_RENDER; i++) + { + icons_bitmap[i] = auto_alloc(machine, bitmap_argb32); + icons_texture[i] = mrender.texture_alloc(); + } + break; + } } // create a texture for main menu background diff --git a/src/emu/ui/utils.cpp b/src/emu/ui/utils.cpp index 608b6b16a88..7ac94d5e050 100644 --- a/src/emu/ui/utils.cpp +++ b/src/emu/ui/utils.cpp @@ -48,6 +48,7 @@ bool ui_globals::redraw_icon = false; int ui_globals::visible_main_lines = 0; int ui_globals::visible_sw_lines = 0; UINT16 ui_globals::panels_status = 0; +bool ui_globals::has_icons = false; // Custom filter UINT16 custfltr::main = 0; diff --git a/src/emu/ui/utils.h b/src/emu/ui/utils.h index 232fb3ccb41..3c8da8ab16e 100644 --- a/src/emu/ui/utils.h +++ b/src/emu/ui/utils.h @@ -208,6 +208,7 @@ struct ui_globals static bool switch_image, redraw_icon, default_image, reset; static int visible_main_lines, visible_sw_lines; static UINT16 panels_status; + static bool has_icons; }; #define main_struct(name) \ |