TIMER: Make sure remnant usecs are always explicitly removed

This commit is contained in:
Mark Pizzolato 2016-12-30 15:38:40 -08:00
parent dbed84c370
commit 711f6167fb
2 changed files with 7 additions and 6 deletions

12
scp.c
View file

@ -9053,21 +9053,21 @@ else
reason = result (SCPE_OK if ok)
*/
t_stat sim_activate_after_abs (UNIT *uptr, uint32 event_time)
t_stat sim_activate_after_abs (UNIT *uptr, uint32 usec_delay)
{
return _sim_activate_after_abs (uptr, event_time);
return _sim_activate_after_abs (uptr, usec_delay);
}
t_stat sim_activate_after_abs_d (UNIT *uptr, double event_time)
t_stat sim_activate_after_abs_d (UNIT *uptr, double usec_delay)
{
return _sim_activate_after_abs (uptr, event_time);
return _sim_activate_after_abs (uptr, usec_delay);
}
t_stat _sim_activate_after_abs (UNIT *uptr, double event_time)
t_stat _sim_activate_after_abs (UNIT *uptr, double usec_delay)
{
AIO_VALIDATE; /* Can't call asynchronously */
sim_cancel (uptr);
return _sim_activate_after (uptr, event_time);
return _sim_activate_after (uptr, usec_delay);
}
t_stat sim_activate_after (UNIT *uptr, uint32 usec_delay)

View file

@ -2338,6 +2338,7 @@ if ((sim_calb_tmr != -1) && (rtc_hz[sim_calb_tmr])) { /* Calibrated Timer
if (inst_delay_d > (double)0x7fffffff)
inst_delay_d = (double)0x7fffffff; /* Bound delay to avoid overflow. */
inst_delay = (int32)inst_delay_d;
uptr->usecs_remaining = 0.0; /* make sure there is no remnant here */
#if defined(SIM_ASYNCH_CLOCKS)
if ((sim_asynch_timer) &&
(usec_delay > sim_idle_rate_ms*1000.0)) {