diff options
author | 2012-09-25 08:08:26 +0000 | |
---|---|---|
committer | 2012-09-25 08:08:26 +0000 | |
commit | 03bb4528a0b3a2265c455c068ad189c44a8723a9 (patch) | |
tree | 4849a62e3ee83fd6e60168de1006e0b7ce4fe77e | |
parent | a68624339fd92b85cc8bd519d37d5108da9a1fae (diff) |
timer - made member calls work (no whatsnew)
-rw-r--r-- | src/emu/timer.c | 5 | ||||
-rw-r--r-- | src/emu/timer.h | 8 |
2 files changed, 8 insertions, 5 deletions
diff --git a/src/emu/timer.c b/src/emu/timer.c index e92cf0ba0af..5fdf6f06e7a 100644 --- a/src/emu/timer.c +++ b/src/emu/timer.c @@ -226,6 +226,8 @@ void timer_device::device_start() // allocate the timer m_timer = timer_alloc(); + m_callback.bind_relative_to(*owner()); + // register for save states save_item(NAME(m_first_time)); } @@ -299,7 +301,8 @@ void timer_device::device_timer(emu_timer &timer, device_timer_id id, int param, { // call the real callback int vpos = m_screen->vpos(); - (m_callback)(*this, m_ptr, vpos); + if (!m_callback.isnull()) + (m_callback)(*this, m_ptr, vpos); // advance by the increment only if we will still be within the screen bounds if (m_increment != 0 && (vpos + m_increment) < m_screen->height()) diff --git a/src/emu/timer.h b/src/emu/timer.h index 87c8b3845ea..8e7c5458c4f 100644 --- a/src/emu/timer.h +++ b/src/emu/timer.h @@ -78,15 +78,15 @@ #define MCFG_TIMER_DRIVER_ADD(_tag, _class, _callback) \ MCFG_DEVICE_ADD(_tag, TIMER, 0) \ - timer_device::static_configure_generic(*device, timer_device_expired_delegate(&_class::_callback, #_class "::" #_callback, NULL)); \ + timer_device::static_configure_generic(*device, timer_device_expired_delegate(&_class::_callback, #_class "::" #_callback, NULL, (_class *)0)); \ #define MCFG_TIMER_DRIVER_ADD_PERIODIC(_tag, _class, _callback, _period) \ MCFG_DEVICE_ADD(_tag, TIMER, 0) \ - timer_device::static_configure_periodic(*device, timer_device_expired_delegate(&_class::_callback, #_class "::" #_callback, NULL), _period); \ + timer_device::static_configure_periodic(*device, timer_device_expired_delegate(&_class::_callback, #_class "::" #_callback, NULL, (_class *)0), _period); \ #define MCFG_TIMER_DRIVER_ADD_SCANLINE(_tag, _class, _callback, _screen, _first_vpos, _increment) \ MCFG_DEVICE_ADD(_tag, TIMER, 0) \ - timer_device::static_configure_scanline(*device, timer_device_expired_delegate(&_class::_callback, #_class "::" #_callback, NULL), _screen, _first_vpos, _increment); \ + timer_device::static_configure_scanline(*device, timer_device_expired_delegate(&_class::_callback, #_class "::" #_callback, NULL, (_class *)0), _screen, _first_vpos, _increment); \ #define MCFG_TIMER_MODIFY(_tag) \ MCFG_DEVICE_MODIFY(_tag) @@ -95,7 +95,7 @@ timer_device::static_set_callback(*device, timer_device_expired_delegate(&_callback, #_callback)); \ #define MCFG_TIMER_DRIVER_CALLBACK(_class, _callback) \ - timer_device::static_set_callback(*device, timer_device_expired_delegate(&_class::_callback, #_class "::" #_callback, NULL)); \ + timer_device::static_set_callback(*device, timer_device_expired_delegate(&_class::_callback, #_class "::" #_callback, NULL, (_class *)0)); \ #define MCFG_TIMER_START_DELAY(_start_delay) \ timer_device::static_set_start_delay(*device, _start_delay); \ |