summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu
diff options
context:
space:
mode:
author Vas Crabb <vas@vastheman.com>2022-06-16 07:07:15 +1000
committer Vas Crabb <vas@vastheman.com>2022-06-16 07:07:15 +1000
commit8a36fece6928c1c00723aa3116556520f880e22d (patch)
treef1e060d1c1a7062b64ffb21da08289649b96f8a1 /src/emu
parentfbc6caa94f8245c415ef8aa82df333c7f7b5a56c (diff)
emu/schedule.cpp: Fixed regressions with some temporary timers.
Diffstat (limited to 'src/emu')
-rw-r--r--src/emu/schedule.cpp11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/emu/schedule.cpp b/src/emu/schedule.cpp
index 462fd5bb6a0..4605dbb82de 100644
--- a/src/emu/schedule.cpp
+++ b/src/emu/schedule.cpp
@@ -87,7 +87,9 @@ emu_timer &emu_timer::init(
m_param = param;
m_temporary = temporary;
m_period = attotime::never;
- m_start = machine.scheduler().time();
+
+ device_scheduler &scheduler = machine.scheduler();
+ m_start = scheduler.time();
m_expire = m_start + start_delay;
m_enabled = !m_expire.is_never();
@@ -96,7 +98,10 @@ emu_timer &emu_timer::init(
register_save();
// insert into the list
- machine.scheduler().timer_list_insert(*this);
+ scheduler.timer_list_insert(*this);
+ if (this == scheduler.first_timer())
+ scheduler.abort_timeslice();
+
return *this;
}
@@ -620,7 +625,7 @@ void device_scheduler::postload()
{
emu_timer &timer = *m_timer_list;
- if (timer.m_temporary && !timer.expire().is_never())
+ if (timer.m_temporary)
{
assert(!timer.expire().is_never());