diff options
author | npwoods <npwoods@alumni.cmu.edu> | 2017-10-06 13:54:10 -0400 |
---|---|---|
committer | ajrhacker <ajrhacker@users.noreply.github.com> | 2017-10-06 13:54:10 -0400 |
commit | 3f144b28611d1e5be616511d9fe557a583c5ddbc (patch) | |
tree | 154abae995e36e5d04336213480843ae56d335e5 | |
parent | 6e30c05c88b3a7303dc27be0a879c39d0087bf9d (diff) |
Fixed an options overhaul regression (#2530)
This crash (discovered by Wizz) had the following symptoms:
1. Start MAME
2. Choose "Configure Machine"
3. Choose "Video Options"
CRASH
This was the result of the options editor not having a fully formed list of options where it was expecting one. The fix is to change the declaration of emu_options to one that have full OSD options (it is possible that SDLMAME needs something slightly different)
I created a osd_setup_osd_specific_emu_options(emu_options &) function that given an emu_options, will slap on system specific options. I see this as only marginally less gross, and I have zero opinion on whether this should be changed to return an emu_options (rather than have a reference parameter), be a static method on emu_options, or what have you.
-rw-r--r-- | src/emu/emuopts.h | 3 | ||||
-rw-r--r-- | src/frontend/mame/ui/miscmenu.cpp | 1 | ||||
-rw-r--r-- | src/frontend/mame/ui/miscmenu.h | 1 | ||||
-rw-r--r-- | src/osd/modules/lib/osdobj_common.h | 1 | ||||
-rw-r--r-- | src/osd/sdl/sdlmain.cpp | 10 | ||||
-rw-r--r-- | src/osd/windows/winmain.cpp | 11 | ||||
-rw-r--r-- | src/osd/windows/winmain.h | 1 |
7 files changed, 25 insertions, 3 deletions
diff --git a/src/emu/emuopts.h b/src/emu/emuopts.h index 21df80b8a05..a449c5d95a1 100644 --- a/src/emu/emuopts.h +++ b/src/emu/emuopts.h @@ -523,4 +523,7 @@ private: std::string m_software_name; }; +// takes an existing emu_options and adds system specific options +void osd_setup_osd_specific_emu_options(emu_options &opts); + #endif // MAME_EMU_EMUOPTS_H diff --git a/src/frontend/mame/ui/miscmenu.cpp b/src/frontend/mame/ui/miscmenu.cpp index f681895b084..5ad96276311 100644 --- a/src/frontend/mame/ui/miscmenu.cpp +++ b/src/frontend/mame/ui/miscmenu.cpp @@ -672,6 +672,7 @@ menu_machine_configure::menu_machine_configure(mame_ui_manager &mui, render_cont { // parse the INI file std::ostringstream error; + osd_setup_osd_specific_emu_options(m_opts); mame_options::parse_standard_inis(m_opts, error, m_drv); setup_bios(); } diff --git a/src/frontend/mame/ui/miscmenu.h b/src/frontend/mame/ui/miscmenu.h index e96a7a2db97..65ef235de57 100644 --- a/src/frontend/mame/ui/miscmenu.h +++ b/src/frontend/mame/ui/miscmenu.h @@ -19,7 +19,6 @@ #include <utility> #include <vector> - namespace ui { class menu_keyboard_mode : public menu { diff --git a/src/osd/modules/lib/osdobj_common.h b/src/osd/modules/lib/osdobj_common.h index 2c2f750fdbe..f3f1c746337 100644 --- a/src/osd/modules/lib/osdobj_common.h +++ b/src/osd/modules/lib/osdobj_common.h @@ -169,7 +169,6 @@ public: const char *pa_device() const { return value(OSDOPTION_PA_DEVICE); } const float pa_latency() const { return float_value(OSDOPTION_PA_LATENCY); } -private: static const options_entry s_option_entries[]; }; diff --git a/src/osd/sdl/sdlmain.cpp b/src/osd/sdl/sdlmain.cpp index 4fa78bbed38..a819c409467 100644 --- a/src/osd/sdl/sdlmain.cpp +++ b/src/osd/sdl/sdlmain.cpp @@ -393,6 +393,16 @@ void sdl_osd_interface::output_oslog(const char *buffer) //============================================================ +// osd_setup_osd_specific_emu_options +//============================================================ + +void osd_setup_osd_specific_emu_options(emu_options &opts) +{ + opts.add_entries(osd_options::s_option_entries); +} + + +//============================================================ // init //============================================================ diff --git a/src/osd/windows/winmain.cpp b/src/osd/windows/winmain.cpp index b1702f7fac3..f33b018f1bf 100644 --- a/src/osd/windows/winmain.cpp +++ b/src/osd/windows/winmain.cpp @@ -619,6 +619,17 @@ void windows_osd_interface::osd_exit() } +//============================================================ +// osd_setup_osd_specific_emu_options +//============================================================ + +void osd_setup_osd_specific_emu_options(emu_options &opts) +{ + opts.add_entries(osd_options::s_option_entries); + opts.add_entries(windows_options::s_option_entries); +} + + #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) //============================================================ diff --git a/src/osd/windows/winmain.h b/src/osd/windows/winmain.h index 1c40a346d34..7b4f3d71009 100644 --- a/src/osd/windows/winmain.h +++ b/src/osd/windows/winmain.h @@ -210,7 +210,6 @@ public: bool global_inputs() const { return bool_value(WINOPTION_GLOBAL_INPUTS); } bool dual_lightgun() const { return bool_value(WINOPTION_DUAL_LIGHTGUN); } -private: static const options_entry s_option_entries[]; }; |