summaryrefslogtreecommitdiffstatshomepage
path: root/src/frontend
diff options
context:
space:
mode:
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
commit080a944190ed581fcc9a847bc7cfd7fedaa58351 (patch)
treeb758ed9698b3ced15ad33ac73c70c924426a5486 /src/frontend
parent164d63d603ef9b679883e93101b77250381820be (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.cpp2
-rw-r--r--src/frontend/mame/ui/swlist.cpp16
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)