void vsyncarch_presync(void) { /* Update mouse */ mouse_update_mouse(); /* Flush keypresses emulated through the keyboard buffer. */ kbdbuf_flush(); joystick_update(); }
void input_update(volatile InputState *state) { state->buttons = buttons_get_state(); joystick_update(&state->joystick); }
/* This is called at the end of each screen frame. It flushes the audio buffer and keeps control of the emulation speed. */ int vsync_do_vsync(int been_skipped) { static unsigned short frame_counter = USHRT_MAX; static unsigned short num_skipped_frames; static int skip_counter; int skip_next_frame = 0; vsync_hook(); if (been_skipped) num_skipped_frames++; if (timer_speed != relative_speed) { frame_counter = USHRT_MAX; if (set_timer_speed(relative_speed) < 0) { log_error(LOG_DEFAULT, "Trouble setting timers... giving up."); /* FIXME: Hm, maybe we should be smarter. But this is should never happen.*/ exit(-1); } } if (warp_mode_enabled) { /* "Warp Mode". Just skip as many frames as possible and do not limit the maximum speed at all. */ if (skip_counter < MAX_SKIPPED_FRAMES) { skip_next_frame = 1; skip_counter++; } else skip_counter = elapsed_frames = 0; sound_flush(0); } else if (refresh_rate != 0) { update_elapsed_frames(0); /* Fixed refresh rate. */ if (timer_speed && skip_counter >= elapsed_frames) timer_sleep(); if (skip_counter < refresh_rate - 1) { skip_next_frame = 1; skip_counter++; } else skip_counter = elapsed_frames = 0; patch_timer(sound_flush(relative_speed)); } else { /* Dynamically adjusted refresh rate. */ update_elapsed_frames(0); if (skip_counter >= elapsed_frames) { elapsed_frames = -1; timer_sleep(); skip_counter = 0; } else if (skip_counter < MAX_SKIPPED_FRAMES) { skip_next_frame = 1; skip_counter++; } else skip_counter = elapsed_frames = 0; patch_timer(sound_flush(relative_speed)); } if (frame_counter >= refresh_frequency * 2) { display_speed(frame_counter + 1 - num_skipped_frames); num_skipped_frames = 0; frame_counter = 0; } else frame_counter++; kbdbuf_flush(); #ifdef HAS_JOYSTICK joystick_update(); #endif return skip_next_frame; }
void joystickb_svgalib_poll(void) { log_debug(("joystickb:svgalib: joystickb_svgalib_poll()\n")); joystick_update(); }