Jelajahi Sumber

tests: Flush events after an SDL_WaitEvent() call

SDL_WaitEvent() will pump OS events if no poll sentinel is pending, so flush events before inserting a user event to ensure that the user event will be next in the queue.
Frank Praznik 2 hari lalu
induk
melakukan
ac82534375
1 mengubah file dengan 3 tambahan dan 0 penghapusan
  1. 3 0
      test/testautomation_events.c

+ 3 - 0
test/testautomation_events.c

@@ -287,6 +287,9 @@ static int SDLCALL events_mainThreadCallbacks(void *arg)
         SDL_WaitThread(thread, NULL);
         SDLTest_AssertCheck(data.counter == 3, "Incremented counter on main thread, expected 3, got %d", data.counter);
 
+        /* Flush events again, as the previous SDL_WaitEvent() call may have pumped OS events and added them to the queue */
+        SDL_FlushEvents(SDL_EVENT_FIRST, SDL_EVENT_LAST);
+
         /* Try again, but this time delay the calls until we've started waiting for events */
         data.delay = 100;
         thread = SDL_CreateThread(IncrementCounterThread, NULL, &data);