From 0d04bbfc58642783f43dded1bdcc54258decf1fa Mon Sep 17 00:00:00 2001 From: otya128 Date: Tue, 13 Dec 2016 20:50:38 +0900 Subject: [PATCH] Fix VSYNC? --- SMILEBASIC/petitcomputer.d | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/SMILEBASIC/petitcomputer.d b/SMILEBASIC/petitcomputer.d index 9e34872..ed11d52 100644 --- a/SMILEBASIC/petitcomputer.d +++ b/SMILEBASIC/petitcomputer.d @@ -1091,7 +1091,7 @@ class PetitComputer { try { - for(int i = 0; !quit && maincnt == oldmaincnt && !vsyncFrame && running; i++) + for(int i = 0; !quit /*&& maincnt == oldmaincnt */&& !vsyncFrame && running; i++) { //writefln("%04X:%s", vm.pc, vm.getCurrent); running = vm.runStep(); @@ -1151,7 +1151,15 @@ class PetitComputer } //while(elapse <= 1000 / 60); if(vsyncFrame) { - SDL_Delay(cast(uint)(vsyncFrame * frame)); + //FIXME:VSYNC IS NOT WAIT + //A=MAINCNT:WAIT 50:A=MAINCNT-A->A=50 + //A=MAINCNT:VSYNC 50:A=MAINCNT-A->A=0~50 + auto endmaincnt = maincnt + vsyncFrame; + graphic.updateVM(); + while (maincnt < endmaincnt) + { + SDL_Delay(cast(uint)(frame)); + } vsyncFrame = 0; } //maincnt = cast(int)((SDL_GetTicks() - startcnt) / frame);