INLINE emu_timer *timer_new(void) { emu_timer *timer; /* remove an empty entry */ if (!timer_free_head) { timer_logtimers(); fatalerror("Out of timers!"); } timer = timer_free_head; timer_free_head = timer->next; if (!timer_free_head) timer_free_tail = NULL; return timer; }
INLINE emu_timer *timer_new(running_machine *machine) { timer_private *global = machine->timer_data; emu_timer *timer; /* if nothing remains available, fatal error -- we should never hit this */ if (global->freelist == NULL) { timer_logtimers(machine); fatalerror("Out of timers!"); } /* pull an entry from the free list */ timer = global->freelist; global->freelist = timer->next; if (global->freelist == NULL) global->freelist_tail = NULL; /* set up the machine */ timer->machine = machine; return timer; }