Initialize timers first so the tick counter is valid by the time the audio and video systems initialize.
--- a/src/SDL.c Thu Dec 29 13:54:22 2011 -0500
+++ b/src/SDL.c Fri Dec 30 06:41:41 2011 -0500
@@ -49,6 +49,25 @@
int
SDL_InitSubSystem(Uint32 flags)
{
+#if !SDL_TIMERS_DISABLED
+ /* Initialize the timer subsystem */
+ if (!ticks_started) {
+ SDL_StartTicks();
+ ticks_started = 1;
+ }
+ if ((flags & SDL_INIT_TIMER) && !(SDL_initialized & SDL_INIT_TIMER)) {
+ if (SDL_TimerInit() < 0) {
+ return (-1);
+ }
+ SDL_initialized |= SDL_INIT_TIMER;
+ }
+#else
+ if (flags & SDL_INIT_TIMER) {
+ SDL_SetError("SDL not built with timer support");
+ return (-1);
+ }
+#endif
+
#if !SDL_VIDEO_DISABLED
/* Initialize the video/event subsystem */
if ((flags & SDL_INIT_VIDEO) && !(SDL_initialized & SDL_INIT_VIDEO)) {
@@ -79,25 +98,6 @@
}
#endif
-#if !SDL_TIMERS_DISABLED
- /* Initialize the timer subsystem */
- if (!ticks_started) {
- SDL_StartTicks();
- ticks_started = 1;
- }
- if ((flags & SDL_INIT_TIMER) && !(SDL_initialized & SDL_INIT_TIMER)) {
- if (SDL_TimerInit() < 0) {
- return (-1);
- }
- SDL_initialized |= SDL_INIT_TIMER;
- }
-#else
- if (flags & SDL_INIT_TIMER) {
- SDL_SetError("SDL not built with timer support");
- return (-1);
- }
-#endif
-
#if !SDL_JOYSTICK_DISABLED
/* Initialize the joystick subsystem */
if ((flags & SDL_INIT_JOYSTICK) && !(SDL_initialized & SDL_INIT_JOYSTICK)) {
@@ -175,12 +175,6 @@
SDL_initialized &= ~SDL_INIT_HAPTIC;
}
#endif
-#if !SDL_TIMERS_DISABLED
- if ((flags & SDL_initialized & SDL_INIT_TIMER)) {
- SDL_TimerQuit();
- SDL_initialized &= ~SDL_INIT_TIMER;
- }
-#endif
#if !SDL_AUDIO_DISABLED
if ((flags & SDL_initialized & SDL_INIT_AUDIO)) {
SDL_AudioQuit();
@@ -193,6 +187,12 @@
SDL_initialized &= ~SDL_INIT_VIDEO;
}
#endif
+#if !SDL_TIMERS_DISABLED
+ if ((flags & SDL_initialized & SDL_INIT_TIMER)) {
+ SDL_TimerQuit();
+ SDL_initialized &= ~SDL_INIT_TIMER;
+ }
+#endif
}
Uint32