]> git.sesse.net Git - pistorm/blobdiff - platforms/amiga/rtg/rtg-output.c
Fix some bugs, accelerate Planar2Chunky
[pistorm] / platforms / amiga / rtg / rtg-output.c
index 895a7eeed06e6d3a2466036c204d03aa14cd17fc..813c1f766dceb5638a23f25697dfbf452747402d 100644 (file)
@@ -134,8 +134,12 @@ reinit_sdl:;
             break;
     }
 
+    uint64_t frame_start = 0, frame_end = 0;
+    float elapsed = 0.0f;
+
     while (1) {
         if (renderer && win && img) {
+            frame_start = SDL_GetPerformanceCounter();
             SDL_RenderClear(renderer);
             if (*data->running) {
                 switch (format) {
@@ -152,7 +156,7 @@ reinit_sdl:;
                 SDL_RenderCopy(renderer, img, NULL, NULL);
             }
             SDL_RenderPresent(renderer);
-            usleep(16667); //ghetto 60hz
+            //usleep(16667); //ghetto 60hz
             if (height != *data->height || width != *data->width || format != *data->format) {
                 printf("Reinitializing due to something change.\n");
                 reinit = 1;
@@ -174,6 +178,9 @@ reinit_sdl:;
                     }
                     break;
             }
+            frame_end = SDL_GetPerformanceCounter();
+            elapsed = (frame_end - frame_start) / (float)SDL_GetPerformanceFrequency() * 1000.0f;
+            SDL_Delay(floor(16.66666f - elapsed));
         }
         else
             break;