}
}
}
- idletime += read_processor_time() - start;
- curr_time = read_processor_time();
+ evt_t tnow = read_processor_time();
+ idletime += tnow - start;
+ curr_time = tnow;
vsyncmintime = curr_time;
vsyncmaxtime = vsyncwaittime = curr_time + vstb;
if (frame_rendered) {
evt_t event_cycles, nextevent, currcycle;
int is_syncline;
+static int syncline_cnt;
frame_time_t is_syncline_end;
int cycles_to_next_event;
int max_cycles_to_next_event;
#endif
#endif
+ if (syncline_cnt > 0) {
+ syncline_cnt--;
+ return;
+ }
+ if (is_syncline) {
+ // runs CPU emulation with chipset stopped
+ // when there is free time to do so
+ if (event_check_vsync()) {
+ syncline_cnt = 16;
+ return;
+ }
+ }
+
if (!currprefs.cpu_thread) {
if ((pissoff -= cycles_to_add) >= 0)
return;