Uint32 SDL_GetTicks(void) { Uint32 ticks; if (!ticks_started) { SDL_InitTicks(); } if (has_monotonic_time) { #if HAVE_CLOCK_GETTIME struct timespec now; clock_gettime(CLOCK_MONOTONIC, &now); ticks = (now.tv_sec - start_ts.tv_sec) * 1000 + (now.tv_nsec - start_ts.tv_nsec) / 1000000; #elif defined(__APPLE__) uint64_t now = mach_absolute_time(); ticks = (((now - start_mach) * mach_base_info.numer) / mach_base_info.denom) / 1000000; #endif } else { struct timeval now; gettimeofday(&now, NULL); ticks = (now.tv_sec - start_tv.tv_sec) * 1000 + (now.tv_usec - start_tv.tv_usec) / 1000; } return (ticks); }
Uint64 SDL_GetPerformanceCounter(void) { Uint64 ticks; if (!ticks_started) { SDL_InitTicks(); } if (has_monotonic_time) { #if HAVE_CLOCK_GETTIME struct timespec now; clock_gettime(CLOCK_MONOTONIC, &now); ticks = now.tv_sec; ticks *= 1000000000; ticks += now.tv_nsec; #elif defined(__APPLE__) ticks = mach_absolute_time(); #endif } else { struct timeval now; gettimeofday(&now, NULL); ticks = now.tv_sec; ticks *= 1000000; ticks += now.tv_usec; } return (ticks); }
Uint32 SDL_GetTicks(void) { if (!ticks_started) { SDL_InitTicks(); } return ((system_time() - start) / 1000); }
Uint32 SDL_GetTicks(void) { if (!ticks_started) { SDL_InitTicks(); } SDL_Unsupported(); return 0; }
Uint64 SDL_GetPerformanceFrequency(void) { if (!ticks_started) { SDL_InitTicks(); } if (has_monotonic_time) { #if HAVE_CLOCK_GETTIME return 1000000000; #elif defined(__APPLE__) Uint64 freq = mach_base_info.denom; freq *= 1000000000; freq /= mach_base_info.numer; return freq; #endif } return 1000000; }
int SDL_InitSubSystem(Uint32 flags) { if (!SDL_MainIsReady) { SDL_SetError("Application didn't initialize properly, did you include SDL_main.h in the file containing your main() function?"); return -1; } /* Clear the error message */ SDL_ClearError(); #if SDL_VIDEO_DRIVER_WINDOWS if (SDL_HelperWindowCreate() < 0) { return -1; } #endif #if !SDL_TIMERS_DISABLED SDL_InitTicks(); #endif if ((flags & SDL_INIT_GAMECONTROLLER)) { /* game controller implies joystick */ flags |= SDL_INIT_JOYSTICK; } if ((flags & (SDL_INIT_VIDEO|SDL_INIT_JOYSTICK))) { /* video or joystick implies events */ flags |= SDL_INIT_EVENTS; } /* Initialize the event subsystem */ if ((flags & SDL_INIT_EVENTS)) { #if !SDL_EVENTS_DISABLED if (SDL_PrivateShouldInitSubsystem(SDL_INIT_EVENTS)) { if (SDL_StartEventLoop() < 0) { return (-1); } SDL_QuitInit(); } SDL_PrivateSubsystemRefCountIncr(SDL_INIT_EVENTS); #else return SDL_SetError("SDL not built with events support"); #endif } /* Initialize the timer subsystem */ if ((flags & SDL_INIT_TIMER)){ #if !SDL_TIMERS_DISABLED if (SDL_PrivateShouldInitSubsystem(SDL_INIT_TIMER)) { if (SDL_TimerInit() < 0) { return (-1); } } SDL_PrivateSubsystemRefCountIncr(SDL_INIT_TIMER); #else return SDL_SetError("SDL not built with timer support"); #endif } /* Initialize the video subsystem */ if ((flags & SDL_INIT_VIDEO)){ #if !SDL_VIDEO_DISABLED if (SDL_PrivateShouldInitSubsystem(SDL_INIT_VIDEO)) { if (SDL_VideoInit(NULL) < 0) { return (-1); } } SDL_PrivateSubsystemRefCountIncr(SDL_INIT_VIDEO); #else return SDL_SetError("SDL not built with video support"); #endif } /* Initialize the audio subsystem */ if ((flags & SDL_INIT_AUDIO)){ #if !SDL_AUDIO_DISABLED if (SDL_PrivateShouldInitSubsystem(SDL_INIT_AUDIO)) { if (SDL_AudioInit(NULL) < 0) { return (-1); } } SDL_PrivateSubsystemRefCountIncr(SDL_INIT_AUDIO); #else return SDL_SetError("SDL not built with audio support"); #endif } /* Initialize the joystick subsystem */ if ((flags & SDL_INIT_JOYSTICK)){ #if !SDL_JOYSTICK_DISABLED if (SDL_PrivateShouldInitSubsystem(SDL_INIT_JOYSTICK)) { if (SDL_JoystickInit() < 0) { return (-1); } } SDL_PrivateSubsystemRefCountIncr(SDL_INIT_JOYSTICK); #else return SDL_SetError("SDL not built with joystick support"); #endif } if ((flags & SDL_INIT_GAMECONTROLLER)){ #if !SDL_JOYSTICK_DISABLED if (SDL_PrivateShouldInitSubsystem(SDL_INIT_GAMECONTROLLER)) { if (SDL_GameControllerInit() < 0) { return (-1); } } SDL_PrivateSubsystemRefCountIncr(SDL_INIT_GAMECONTROLLER); #else return SDL_SetError("SDL not built with joystick support"); #endif } /* Initialize the haptic subsystem */ if ((flags & SDL_INIT_HAPTIC)){ #if !SDL_HAPTIC_DISABLED if (SDL_PrivateShouldInitSubsystem(SDL_INIT_HAPTIC)) { if (SDL_HapticInit() < 0) { return (-1); } } SDL_PrivateSubsystemRefCountIncr(SDL_INIT_HAPTIC); #else return SDL_SetError("SDL not built with haptic (force feedback) support"); #endif } return (0); }