From e3df53078639764d354348974160cb19cf4dbfec Mon Sep 17 00:00:00 2001 From: Vas Crabb Date: Tue, 7 Apr 2015 16:55:52 +1000 Subject: [PATCH] Make OSD options an init parameter for modules --- src/osd/modules/debugger/debugint.c | 2 +- src/osd/modules/debugger/debugosx.m | 4 +- src/osd/modules/debugger/debugqt.c | 2 +- src/osd/modules/debugger/debugwin.c | 2 +- src/osd/modules/debugger/none.c | 2 +- src/osd/modules/font/font_none.c | 7 ++-- src/osd/modules/font/font_osx.c | 49 ++++++++++++------------- src/osd/modules/font/font_sdl.c | 7 ++-- src/osd/modules/font/font_windows.c | 7 ++-- src/osd/modules/lib/osdobj_common.c | 6 +-- src/osd/modules/midi/none.c | 4 +- src/osd/modules/midi/portmidi.c | 4 +- src/osd/modules/netdev/none.c | 1 + src/osd/modules/netdev/pcap.c | 4 +- src/osd/modules/netdev/taptun.c | 4 +- src/osd/modules/osdmodule.c | 4 +- src/osd/modules/osdmodule.h | 9 +++-- src/osd/modules/sound/coreaudio_sound.c | 5 ++- src/osd/modules/sound/direct_sound.c | 4 +- src/osd/modules/sound/js_sound.c | 2 +- src/osd/modules/sound/none.c | 2 +- src/osd/modules/sound/sdl_sound.c | 4 +- 22 files changed, 68 insertions(+), 67 deletions(-) diff --git a/src/osd/modules/debugger/debugint.c b/src/osd/modules/debugger/debugint.c index 3230e032bb8..545682b4456 100644 --- a/src/osd/modules/debugger/debugint.c +++ b/src/osd/modules/debugger/debugint.c @@ -35,7 +35,7 @@ public: virtual ~debug_internal() { } - virtual int init() { return 0;} + virtual int init(const osd_options &options) { return 0; } virtual void exit(); virtual void init_debugger(running_machine &machine); diff --git a/src/osd/modules/debugger/debugosx.m b/src/osd/modules/debugger/debugosx.m index 27104a1b462..d93c4c47877 100644 --- a/src/osd/modules/debugger/debugosx.m +++ b/src/osd/modules/debugger/debugosx.m @@ -53,7 +53,7 @@ public: [m_console release]; } - virtual int init(); + virtual int init(const osd_options &options); virtual void exit(); virtual void init_debugger(running_machine &machine); @@ -71,7 +71,7 @@ MODULE_DEFINITION(DEBUG_OSX, debugger_osx) // debugger_osx::init //============================================================ -int debugger_osx::init() +int debugger_osx::init(const osd_options &options) { return 0; } diff --git a/src/osd/modules/debugger/debugqt.c b/src/osd/modules/debugger/debugqt.c index 22614949735..0c0c2ef89bb 100644 --- a/src/osd/modules/debugger/debugqt.c +++ b/src/osd/modules/debugger/debugqt.c @@ -45,7 +45,7 @@ public: virtual ~debug_qt() { } - virtual int init() { return 0;} + virtual int init(const osd_options &options) { return 0; } virtual void exit() { } virtual void init_debugger(running_machine &machine); diff --git a/src/osd/modules/debugger/debugwin.c b/src/osd/modules/debugger/debugwin.c index 73bcd59c6e3..ff8b94e8646 100644 --- a/src/osd/modules/debugger/debugwin.c +++ b/src/osd/modules/debugger/debugwin.c @@ -46,7 +46,7 @@ public: virtual ~debugger_windows() { } - virtual int init() { return 0; } + virtual int init(const osd_options &options) { return 0; } virtual void exit(); virtual void init_debugger(running_machine &machine); diff --git a/src/osd/modules/debugger/none.c b/src/osd/modules/debugger/none.c index 7fc671880fd..8c5cd05e6bc 100644 --- a/src/osd/modules/debugger/none.c +++ b/src/osd/modules/debugger/none.c @@ -20,7 +20,7 @@ public: virtual ~debug_none() { } - virtual int init() { return 0;} + virtual int init(const osd_options &options) { return 0; } virtual void exit() { } virtual void init_debugger(running_machine &machine); diff --git a/src/osd/modules/font/font_none.c b/src/osd/modules/font/font_none.c index 8f19e448be1..83c920d41e1 100644 --- a/src/osd/modules/font/font_none.c +++ b/src/osd/modules/font/font_none.c @@ -14,7 +14,7 @@ class osd_font_none : public osd_font { public: - virtual ~osd_font_none() {}; + virtual ~osd_font_none() { } virtual bool open(const char *font_path, const char *name, int &height); virtual void close(); @@ -52,11 +52,12 @@ bool osd_font_none::get_bitmap(unicode_char chnum, bitmap_argb32 &bitmap, INT32 class font_none : public osd_module, public font_module { public: - font_none() - : osd_module(OSD_FONT_PROVIDER, "none"), font_module() + font_none() : osd_module(OSD_FONT_PROVIDER, "none"), font_module() { } + virtual int init(const osd_options &options) { return 0; } + osd_font *font_alloc() { return global_alloc(osd_font_none); diff --git a/src/osd/modules/font/font_osx.c b/src/osd/modules/font/font_osx.c index 90b4544ac2e..c47b074ae77 100644 --- a/src/osd/modules/font/font_osx.c +++ b/src/osd/modules/font/font_osx.c @@ -26,7 +26,7 @@ class osd_font_osx : public osd_font { public: - virtual ~osd_font_osx() {}; + virtual ~osd_font_osx() { } virtual bool open(const char *font_path, const char *name, int &height); virtual void close(); @@ -37,14 +37,9 @@ private: bool osd_font_osx::open(const char *font_path, const char *_name, int &height) { - CFStringRef font_name = NULL; - CTFontRef ct_font = NULL; - CTFontDescriptorRef font_descriptor; - CGAffineTransform affine_transform = CGAffineTransformIdentity; - m_font = NULL; astring name(_name); - printf("FONT NAME %s\n", _name); + osd_printf_verbose("FONT NAME %s\n", _name); #if 0 if (name == "default") { @@ -53,23 +48,23 @@ bool osd_font_osx::open(const char *font_path, const char *_name, int &height) #endif /* handle bdf fonts in the core */ if (name.len() > 4) - if (name.makeupper().substr(name.len()-4,4) == ".BDF" ) - return false; - - font_name = CFStringCreateWithCString( NULL, name.cstr(), kCFStringEncodingUTF8 ); - if( font_name != NULL ) { - font_descriptor = CTFontDescriptorCreateWithNameAndSize( font_name, 0.0); //POINT_SIZE ); - - if( font_descriptor != NULL ) - { - ct_font = CTFontCreateWithFontDescriptor( font_descriptor, POINT_SIZE, &affine_transform ); - - CFRelease( font_descriptor ); - } + if (name.makeupper().substr(name.len() - 4, 4) == ".BDF") + return false; } - CFRelease( font_name ); + CTFontRef ct_font = NULL; + CFStringRef const font_name = CFStringCreateWithCString(NULL, name.cstr(), kCFStringEncodingUTF8); + if (font_name != NULL) + { + CTFontDescriptorRef const font_descriptor = CTFontDescriptorCreateWithNameAndSize(font_name, 0.0); + if (font_descriptor != NULL) + { + ct_font = CTFontCreateWithFontDescriptor(font_descriptor, POINT_SIZE, &CGAffineTransformIdentity); + CFRelease(font_descriptor); + } + } + CFRelease(font_name); if (!ct_font) { @@ -77,11 +72,11 @@ bool osd_font_osx::open(const char *font_path, const char *_name, int &height) return false; } - CFStringRef real_name = CTFontCopyPostScriptName( ct_font ); + CFStringRef const real_name = CTFontCopyPostScriptName(ct_font); char real_name_c_string[255]; - CFStringGetCString ( real_name, real_name_c_string, 255, kCFStringEncodingUTF8 ); + CFStringGetCString(real_name, real_name_c_string, 255, kCFStringEncodingUTF8); osd_printf_verbose("Matching font: %s\n", real_name_c_string); - CFRelease( real_name ); + CFRelease(real_name); CGFloat line_height = 0.0; line_height += CTFontGetAscent(ct_font); @@ -100,9 +95,9 @@ bool osd_font_osx::open(const char *font_path, const char *_name, int &height) void osd_font_osx::close() { - if( m_font != NULL ) + if (m_font != NULL) { - CFRelease( m_font ); + CFRelease(m_font); } } @@ -190,6 +185,8 @@ public: { } + virtual int init(const osd_options &options) { return 0; } + osd_font *font_alloc() { return global_alloc(osd_font_osx); diff --git a/src/osd/modules/font/font_sdl.c b/src/osd/modules/font/font_sdl.c index d10f7209ab1..4305da427ea 100644 --- a/src/osd/modules/font/font_sdl.c +++ b/src/osd/modules/font/font_sdl.c @@ -32,7 +32,7 @@ class osd_font_sdl : public osd_font { public: - virtual ~osd_font_sdl() {}; + virtual ~osd_font_sdl() { } virtual bool open(const char *font_path, const char *name, int &height); virtual void close(); @@ -328,8 +328,7 @@ TTF_Font *osd_font_sdl::search_font_config(astring name, bool bold, bool italic, class font_sdl : public osd_module, public font_module { public: - font_sdl() - : osd_module(OSD_FONT_PROVIDER, "sdl"), font_module() + font_sdl() : osd_module(OSD_FONT_PROVIDER, "sdl"), font_module() { } @@ -338,7 +337,7 @@ public: return global_alloc(osd_font_sdl); } - int init() + virtual int init(const osd_options &options) { if (TTF_Init() == -1) { diff --git a/src/osd/modules/font/font_windows.c b/src/osd/modules/font/font_windows.c index 88606bde6e1..8263bc9020d 100644 --- a/src/osd/modules/font/font_windows.c +++ b/src/osd/modules/font/font_windows.c @@ -34,7 +34,7 @@ class osd_font_windows : public osd_font { public: - virtual ~osd_font_windows() {}; + virtual ~osd_font_windows() { } virtual bool open(const char *font_path, const char *name, int &height); virtual void close(); @@ -266,11 +266,12 @@ bool osd_font_windows::get_bitmap(unicode_char chnum, bitmap_argb32 &bitmap, INT class font_win : public osd_module, public font_module { public: - font_win() - : osd_module(OSD_FONT_PROVIDER, "win"), font_module() + font_win() : osd_module(OSD_FONT_PROVIDER, "win"), font_module() { } + virtual int init(const osd_options &options) { return 0; } + osd_font *font_alloc() { return global_alloc(osd_font_windows); diff --git a/src/osd/modules/lib/osdobj_common.c b/src/osd/modules/lib/osdobj_common.c index ca384b27f96..b7ebdb5eeef 100644 --- a/src/osd/modules/lib/osdobj_common.c +++ b/src/osd/modules/lib/osdobj_common.c @@ -500,7 +500,7 @@ bool osd_common_t::execute_command(const char *command) if (om->probe()) { - om->init(); + om->init(options()); osd_list_network_adapters(); om->exit(); } @@ -514,7 +514,7 @@ bool osd_common_t::execute_command(const char *command) if (om->probe()) { - om->init(); + om->init(options()); pm->list_midi_devices(); om->exit(); } @@ -555,7 +555,7 @@ void osd_common_t::init_subsystems() m_midi = select_module_options(options(), OSD_MIDI_PROVIDER); - m_mod_man.init(); + m_mod_man.init(options()); } diff --git a/src/osd/modules/midi/none.c b/src/osd/modules/midi/none.c index 7bc87d06ff7..df78ac26950 100644 --- a/src/osd/modules/midi/none.c +++ b/src/osd/modules/midi/none.c @@ -21,7 +21,7 @@ public: } virtual ~none_module() { } - virtual int init(); + virtual int init(const osd_options &options); virtual void exit(); osd_midi_device *create_midi_device(); @@ -50,7 +50,7 @@ osd_midi_device *none_module::create_midi_device() } -int none_module::init() +int none_module::init(const osd_options &options) { return 0; } diff --git a/src/osd/modules/midi/portmidi.c b/src/osd/modules/midi/portmidi.c index ef5ea1dd99a..7d4315d08ac 100644 --- a/src/osd/modules/midi/portmidi.c +++ b/src/osd/modules/midi/portmidi.c @@ -24,7 +24,7 @@ public: } virtual ~pm_module() { } - virtual int init(); + virtual int init(const osd_options &options); virtual void exit(); osd_midi_device *create_midi_device(); @@ -63,7 +63,7 @@ osd_midi_device *pm_module::create_midi_device() } -int pm_module::init() +int pm_module::init(const osd_options &options) { Pm_Initialize(); return 0; diff --git a/src/osd/modules/netdev/none.c b/src/osd/modules/netdev/none.c index 6cf31052d68..ed0d8832097 100644 --- a/src/osd/modules/netdev/none.c +++ b/src/osd/modules/netdev/none.c @@ -13,6 +13,7 @@ public: : osd_module(OSD_NETDEV_PROVIDER, "none"), netdev_module() { } + int init(const osd_options &options) { return 0; } }; MODULE_DEFINITION(NETDEV_NONE, netdev_none) diff --git a/src/osd/modules/netdev/pcap.c b/src/osd/modules/netdev/pcap.c index 7cdb4673088..3728f1aae9e 100644 --- a/src/osd/modules/netdev/pcap.c +++ b/src/osd/modules/netdev/pcap.c @@ -58,7 +58,7 @@ public: } virtual ~pcap_module() { } - virtual int init(); + virtual int init(const osd_options &options); virtual void exit(); virtual bool probe(); @@ -251,7 +251,7 @@ bool pcap_module::probe() } -int pcap_module::init() +int pcap_module::init(const osd_options &options) { pcap_if_t *devs; char errbuf[PCAP_ERRBUF_SIZE]; diff --git a/src/osd/modules/netdev/taptun.c b/src/osd/modules/netdev/taptun.c index f5be386b870..5c2e8579107 100644 --- a/src/osd/modules/netdev/taptun.c +++ b/src/osd/modules/netdev/taptun.c @@ -27,7 +27,7 @@ public: } virtual ~taptun_module() { } - virtual int init(); + virtual int init(const osd_options &options); virtual void exit(); virtual bool probe() { return true; } @@ -118,7 +118,7 @@ static CREATE_NETDEV(create_tap) return dynamic_cast(dev); } -int taptun_module::init() +int taptun_module::init(const osd_options &options) { add_netdev("tap", "TAP/TUN Device", create_tap); return 0; diff --git a/src/osd/modules/osdmodule.c b/src/osd/modules/osdmodule.c index 06c36b0e3d4..403dea57e80 100644 --- a/src/osd/modules/osdmodule.c +++ b/src/osd/modules/osdmodule.c @@ -68,11 +68,11 @@ osd_module *osd_module_manager::select_module(const char *type, const char *name return m; } -void osd_module_manager::init() +void osd_module_manager::init(const osd_options &options) { for (int i = 0; m_selected[i] != NULL; i++) { - m_selected[i]->init(); + m_selected[i]->init(options); } } diff --git a/src/osd/modules/osdmodule.h b/src/osd/modules/osdmodule.h index f04d24e1f40..9c7e7a62e36 100644 --- a/src/osd/modules/osdmodule.h +++ b/src/osd/modules/osdmodule.h @@ -18,6 +18,7 @@ // TYPE DEFINITIONS //============================================================ +class osd_options; class osd_module; // ======================> osd_module @@ -36,7 +37,7 @@ public: virtual bool probe() { return true; } - virtual int init() { return 0; } + virtual int init(const osd_options &options) = 0; virtual void exit() { } private: @@ -79,7 +80,7 @@ public: void get_module_names(const char *type, const int max, int *num, const char *names[]); - void init(); + void init(const osd_options &options); void exit(); @@ -98,8 +99,8 @@ private: #define MODULE_NOT_SUPPORTED(_mod, _type, _name) \ class _mod : public osd_module { \ public: \ - _mod () \ - : osd_module(_type, _name) {} \ + _mod () : osd_module(_type, _name) { } \ + int init(const osd_options &options) { return -1; } \ bool probe() { return false; } \ }; diff --git a/src/osd/modules/sound/coreaudio_sound.c b/src/osd/modules/sound/coreaudio_sound.c index 56f65b43a67..da27ef486fd 100644 --- a/src/osd/modules/sound/coreaudio_sound.c +++ b/src/osd/modules/sound/coreaudio_sound.c @@ -11,6 +11,7 @@ #include "sound_module.h" #include "modules/osdmodule.h" +#include "modules/lib/osdobj_common.h" #ifdef SDLMAME_MACOSX @@ -42,7 +43,7 @@ public: { } - virtual int init(); + virtual int init(const osd_options &options); virtual void exit(); // sound_module @@ -99,7 +100,7 @@ private: }; -int sound_coreaudio::init() +int sound_coreaudio::init(const osd_options &options) { OSStatus err; diff --git a/src/osd/modules/sound/direct_sound.c b/src/osd/modules/sound/direct_sound.c index a005813adb7..203ffc7c5e9 100644 --- a/src/osd/modules/sound/direct_sound.c +++ b/src/osd/modules/sound/direct_sound.c @@ -57,7 +57,7 @@ public: } virtual ~sound_direct_sound() { } - virtual int init(); + virtual int init(const osd_options &options); virtual void exit(); // sound_module @@ -108,7 +108,7 @@ static int buffer_overflows; // sound_direct_sound - constructor //------------------------------------------------- -int sound_direct_sound::init() +int sound_direct_sound::init(const osd_options &options) { // attempt to initialize directsound // don't make it fatal if we can't -- we'll just run without sound diff --git a/src/osd/modules/sound/js_sound.c b/src/osd/modules/sound/js_sound.c index 4830999676a..103a20b799c 100644 --- a/src/osd/modules/sound/js_sound.c +++ b/src/osd/modules/sound/js_sound.c @@ -25,7 +25,7 @@ public: } virtual ~sound_js() { } - virtual int init() { } + virtual int init(const osd_options &options) { } virtual void exit() { } // sound_module diff --git a/src/osd/modules/sound/none.c b/src/osd/modules/sound/none.c index 501b064afab..2c2e07b8198 100644 --- a/src/osd/modules/sound/none.c +++ b/src/osd/modules/sound/none.c @@ -20,7 +20,7 @@ public: } virtual ~sound_none() { } - virtual int init() { return 0; } + virtual int init(const osd_options &options) { return 0; } virtual void exit() { } // sound_module diff --git a/src/osd/modules/sound/sdl_sound.c b/src/osd/modules/sound/sdl_sound.c index 0c9550421b7..3f665242089 100644 --- a/src/osd/modules/sound/sdl_sound.c +++ b/src/osd/modules/sound/sdl_sound.c @@ -58,7 +58,7 @@ public: } virtual ~sound_sdl() { } - virtual int init(); + virtual int init(const osd_options &options); virtual void exit(); // sound_module @@ -403,7 +403,7 @@ static void sdl_callback(void *userdata, Uint8 *stream, int len) // sound_sdl::init //============================================================ -int sound_sdl::init() +int sound_sdl::init(const osd_options &options) { int n_channels = 2; int audio_latency;