summaryrefslogtreecommitdiffstatshomepage
path: root/src/osd/modules/lib/osdobj_common.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/osd/modules/lib/osdobj_common.cpp')
-rw-r--r--src/osd/modules/lib/osdobj_common.cpp20
1 files changed, 19 insertions, 1 deletions
diff --git a/src/osd/modules/lib/osdobj_common.cpp b/src/osd/modules/lib/osdobj_common.cpp
index 745b71f4d1a..351b87aa269 100644
--- a/src/osd/modules/lib/osdobj_common.cpp
+++ b/src/osd/modules/lib/osdobj_common.cpp
@@ -56,6 +56,7 @@ const options_entry osd_options::s_option_entries[] =
{ OSDOPTION_MAXIMIZE ";max", "1", OPTION_BOOLEAN, "default to maximized windows; otherwise, windows will be minimized" },
{ OSDOPTION_WAITVSYNC ";vs", "0", OPTION_BOOLEAN, "enable waiting for the start of VBLANK before flipping screens; reduces tearing effects" },
{ OSDOPTION_SYNCREFRESH ";srf", "0", OPTION_BOOLEAN, "enable using the start of VBLANK for throttling instead of the game time" },
+ { OSD_MONITOR_PROVIDER, OSDOPTVAL_AUTO, OPTION_STRING, "monitor discovery method" },
// per-window options
{ nullptr, nullptr, OPTION_HEADER, "OSD PER-WINDOW VIDEO OPTIONS" },
@@ -179,6 +180,7 @@ osd_common_t::osd_common_t(osd_options &options)
m_lightgun_input(nullptr),
m_joystick_input(nullptr),
m_output(nullptr),
+ m_monitor_module(nullptr),
m_watchdog(nullptr)
{
osd_output::push(this);
@@ -213,6 +215,10 @@ void osd_common_t::register_options()
REGISTER_MODULE(m_mod_man, SOUND_SDL);
REGISTER_MODULE(m_mod_man, SOUND_NONE);
+ REGISTER_MODULE(m_mod_man, MONITOR_SDL);
+ REGISTER_MODULE(m_mod_man, MONITOR_WIN32);
+ REGISTER_MODULE(m_mod_man, MONITOR_DXGI);
+
#ifdef SDLMAME_MACOSX
REGISTER_MODULE(m_mod_man, DEBUG_OSX);
#endif
@@ -265,8 +271,15 @@ void osd_common_t::register_options()
const char *names[20];
int num;
- m_mod_man.get_module_names(OSD_FONT_PROVIDER, 20, &num, names);
std::vector<const char *> dnames;
+
+ m_mod_man.get_module_names(OSD_MONITOR_PROVIDER, 20, &num, names);
+ for (int i = 0; i < num; i++)
+ dnames.push_back(names[i]);
+ update_option(OSD_MONITOR_PROVIDER, dnames);
+
+ m_mod_man.get_module_names(OSD_FONT_PROVIDER, 20, &num, names);
+ dnames.clear();
for (int i = 0; i < num; i++)
dnames.push_back(names[i]);
update_option(OSD_FONT_PROVIDER, dnames);
@@ -618,6 +631,11 @@ static void output_notifier_callback(const char *outname, INT32 value, void *par
void osd_common_t::init_subsystems()
{
+ // monitors have to be initialized before video init
+ m_monitor_module = select_module_options<monitor_module *>(options(), OSD_MONITOR_PROVIDER);
+ assert(m_monitor_module != nullptr);
+ m_monitor_module->init(options());
+
if (!video_init())
{
video_exit();