diff --git a/src/SDL.c b/src/SDL.c
index 58d6f365c9049f8694a7b73f9f5516ddef6c8b6b..4444a8b49b66e8e843072dfc0b458e289fa17a15 100644
--- a/src/SDL.c
+++ b/src/SDL.c
@@ -49,6 +49,25 @@ static Uint32 ticks_started = 0;
 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 @@ SDL_InitSubSystem(Uint32 flags)
     }
 #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_QuitSubSystem(Uint32 flags)
         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_QuitSubSystem(Uint32 flags)
         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