mirror of
https://github.com/holub/mame
synced 2025-06-22 20:38:50 +03:00
Merge pull request #1181 from npwoods/fix_swlist_load
This fixes issues where softlist items (that were not for floppies) were loaded from the software list menu
This commit is contained in:
commit
8bb6ec6d6f
@ -1370,6 +1370,10 @@ bool device_image_interface::load_software_part(const char *path, const software
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// I'm not sure what m_init_phase is all about; but for now I'm preserving this behavior
|
||||||
|
if (is_reset_on_load())
|
||||||
|
set_init_phase();
|
||||||
|
|
||||||
// Load the software part
|
// Load the software part
|
||||||
software_list_device &swlist = swpart->info().list();
|
software_list_device &swlist = swpart->info().list();
|
||||||
const char *swname = swpart->info().shortname().c_str();
|
const char *swname = swpart->info().shortname().c_str();
|
||||||
|
@ -61,16 +61,8 @@ void menu_control_floppy_image::do_load_create()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void menu_control_floppy_image::hook_load(const std::string &filename, bool softlist)
|
void menu_control_floppy_image::hook_load(const std::string &filename)
|
||||||
{
|
{
|
||||||
if (softlist)
|
|
||||||
{
|
|
||||||
machine().popmessage("When loaded from software list, the disk is Read-only.\n");
|
|
||||||
m_image.load_software(filename);
|
|
||||||
stack_pop();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
input_filename = filename;
|
input_filename = filename;
|
||||||
input_format = static_cast<floppy_image_device &>(m_image).identify(filename);
|
input_format = static_cast<floppy_image_device &>(m_image).identify(filename);
|
||||||
|
|
||||||
|
@ -33,7 +33,7 @@ private:
|
|||||||
virtual void handle() override;
|
virtual void handle() override;
|
||||||
|
|
||||||
void do_load_create();
|
void do_load_create();
|
||||||
virtual void hook_load(const std::string &filename, bool softlist) override;
|
virtual void hook_load(const std::string &filename) override;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace ui
|
} // namespace ui
|
||||||
|
@ -140,7 +140,10 @@ void menu_control_device_image::load_software_part()
|
|||||||
media_auditor::summary summary = auditor.audit_software(m_sld->list_name(), (software_info *)m_swi, AUDIT_VALIDATE_FAST);
|
media_auditor::summary summary = auditor.audit_software(m_sld->list_name(), (software_info *)m_swi, AUDIT_VALIDATE_FAST);
|
||||||
// if everything looks good, load software
|
// if everything looks good, load software
|
||||||
if (summary == media_auditor::CORRECT || summary == media_auditor::BEST_AVAILABLE || summary == media_auditor::NONE_NEEDED)
|
if (summary == media_auditor::CORRECT || summary == media_auditor::BEST_AVAILABLE || summary == media_auditor::NONE_NEEDED)
|
||||||
hook_load(temp_name, true);
|
{
|
||||||
|
m_image.load_software(temp_name);
|
||||||
|
stack_pop();
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
machine().popmessage(_("The software selected is missing one or more required ROM or CHD images. Please select a different one."));
|
machine().popmessage(_("The software selected is missing one or more required ROM or CHD images. Please select a different one."));
|
||||||
@ -153,7 +156,7 @@ void menu_control_device_image::load_software_part()
|
|||||||
// hook_load
|
// hook_load
|
||||||
//-------------------------------------------------
|
//-------------------------------------------------
|
||||||
|
|
||||||
void menu_control_device_image::hook_load(const std::string &name, bool softlist)
|
void menu_control_device_image::hook_load(const std::string &name)
|
||||||
{
|
{
|
||||||
if (m_image.is_reset_on_load()) m_image.set_init_phase();
|
if (m_image.is_reset_on_load()) m_image.set_init_phase();
|
||||||
m_image.load(name);
|
m_image.load(name);
|
||||||
@ -276,7 +279,7 @@ void menu_control_device_image::handle()
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case menu_file_selector::result::FILE:
|
case menu_file_selector::result::FILE:
|
||||||
hook_load(m_current_file, false);
|
hook_load(m_current_file);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case menu_file_selector::result::CREATE:
|
case menu_file_selector::result::CREATE:
|
||||||
|
@ -53,7 +53,7 @@ protected:
|
|||||||
bool m_create_ok;
|
bool m_create_ok;
|
||||||
|
|
||||||
// methods
|
// methods
|
||||||
virtual void hook_load(const std::string &filename, bool softlist);
|
virtual void hook_load(const std::string &filename);
|
||||||
virtual void handle() override;
|
virtual void handle() override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
Loading…
Reference in New Issue
Block a user