diff options
author | Nigel Barnes <Pernod70@users.noreply.github.com> | 2017-02-15 11:15:28 +0000 |
---|---|---|
committer | Nigel Barnes <Pernod70@users.noreply.github.com> | 2017-02-15 11:15:28 +0000 |
commit | 080a944190ed581fcc9a847bc7cfd7fedaa58351 (patch) | |
tree | b758ed9698b3ced15ad33ac73c70c924426a5486 /src/frontend | |
parent | 164d63d603ef9b679883e93101b77250381820be (diff) |
allow softlist software parts to use different interfaces:
- imgcntrl: don't assume first software part, find part with correct interface
- swlist: check all software parts for matching interface when populating list of software lists
- softlist_dev: check all software parts when finding approx matches
Diffstat (limited to 'src/frontend')
-rw-r--r-- | src/frontend/mame/ui/imgcntrl.cpp | 2 | ||||
-rw-r--r-- | src/frontend/mame/ui/swlist.cpp | 16 |
2 files changed, 13 insertions, 5 deletions
diff --git a/src/frontend/mame/ui/imgcntrl.cpp b/src/frontend/mame/ui/imgcntrl.cpp index 793466f7d57..1c25db2cac4 100644 --- a/src/frontend/mame/ui/imgcntrl.cpp +++ b/src/frontend/mame/ui/imgcntrl.cpp @@ -223,7 +223,7 @@ void menu_control_device_image::handle() } else { - m_swp = &m_swi->parts().front(); + m_swp = m_swi->find_part("", m_image.image_interface()); load_software_part(); } break; diff --git a/src/frontend/mame/ui/swlist.cpp b/src/frontend/mame/ui/swlist.cpp index c327980376f..04c4feadad1 100644 --- a/src/frontend/mame/ui/swlist.cpp +++ b/src/frontend/mame/ui/swlist.cpp @@ -354,8 +354,12 @@ void menu_software::populate(float &customtop, float &custombottom) { bool found = false; for (const software_info &swinfo : swlistdev.get_info()) - if (swinfo.parts().front().matches_interface(m_interface)) - found = true; + for (const software_part &swpart : swinfo.parts()) + if (swpart.matches_interface(m_interface)) + { + found = true; + break; + } if (found) item_append(swlistdev.description(), "", 0, (void *)&swlistdev); } @@ -367,8 +371,12 @@ void menu_software::populate(float &customtop, float &custombottom) { bool found = false; for (const software_info &swinfo : swlistdev.get_info()) - if (swinfo.parts().front().matches_interface(m_interface)) - found = true; + for (const software_part &swpart : swinfo.parts()) + if (swpart.matches_interface(m_interface)) + { + found = true; + break; + } if (found) { if (!have_compatible) |