summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
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
commit3f144b28611d1e5be616511d9fe557a583c5ddbc (patch)
tree154abae995e36e5d04336213480843ae56d335e5
parent6e30c05c88b3a7303dc27be0a879c39d0087bf9d (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.h3
-rw-r--r--src/frontend/mame/ui/miscmenu.cpp1
-rw-r--r--src/frontend/mame/ui/miscmenu.h1
-rw-r--r--src/osd/modules/lib/osdobj_common.h1
-rw-r--r--src/osd/sdl/sdlmain.cpp10
-rw-r--r--src/osd/windows/winmain.cpp11
-rw-r--r--src/osd/windows/winmain.h1
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[];
};