Răsfoiți Sursa

testatomic: destroy threads + free all memory at quit to fix --trackmem

(cherry picked from commit 831c79d32f44b536a6f8973e67be4a204783b36a)
Anonymous Maarten 1 an în urmă
părinte
comite
799ede831e
1 a modificat fișierele cu 8 adăugiri și 2 ștergeri
  1. 8 2
      test/testatomic.c

+ 8 - 2
test/testatomic.c

@@ -132,6 +132,7 @@ static void runAdder(void)
 {
 {
     Uint32 start, end;
     Uint32 start, end;
     int T = NThreads;
     int T = NThreads;
+    SDL_Thread *threads[NThreads];
 
 
     start = SDL_GetTicks();
     start = SDL_GetTicks();
 
 
@@ -139,14 +140,18 @@ static void runAdder(void)
 
 
     SDL_AtomicSet(&threadsRunning, NThreads);
     SDL_AtomicSet(&threadsRunning, NThreads);
 
 
-    while (T--) {
-        SDL_CreateThread(adder, "Adder", NULL);
+    for (i = 0; i < NThreads; i++) {
+        threads[i] = SDL_CreateThread(adder, "Adder", NULL);
     }
     }
 
 
     while (SDL_AtomicGet(&threadsRunning) > 0) {
     while (SDL_AtomicGet(&threadsRunning) > 0) {
         SDL_SemWait(threadDone);
         SDL_SemWait(threadDone);
     }
     }
 
 
+    for (i = 0; i < NThreads; i++) {
+        SDL_WaitThread(threads[i], NULL);
+    }
+
     SDL_DestroySemaphore(threadDone);
     SDL_DestroySemaphore(threadDone);
 
 
     end = SDL_GetTicks();
     end = SDL_GetTicks();
@@ -733,6 +738,7 @@ int main(int argc, char *argv[])
     RunFIFOTest(SDL_FALSE);
     RunFIFOTest(SDL_FALSE);
 #endif
 #endif
     RunFIFOTest(SDL_TRUE);
     RunFIFOTest(SDL_TRUE);
+    SDL_Quit();
     SDLTest_CommonQuit(state);
     SDLTest_CommonQuit(state);
     return 0;
     return 0;
 }
 }