From e219797b1657ee0d730f799847e358aaf04dec65 Mon Sep 17 00:00:00 2001 From: Yves Rizoud Date: Thu, 25 Sep 2008 18:53:16 +0000 Subject: [PATCH] Implemented a time simulator for Wait_VBL() git-svn-id: svn://pulkomandy.tk/GrafX2/trunk@166 416bcca6-2ee7-4201-b75f-2eb2f807beb1 --- divers.c | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/divers.c b/divers.c index f1177613..d3cb7cf7 100644 --- a/divers.c +++ b/divers.c @@ -336,9 +336,22 @@ void Initialiser_chrono(dword Delai) } void Wait_VBL(void) -// Attente de VBL. Pour avoir des scrollbars qui ont une vitesse raisonnable par exemple. SDL ne sait pas faire ? +// Attente de VBL. Pour avoir des scrollbars qui ont une vitesse raisonnable par exemple. +// SDL ne sait pas faire, alors on simule un timer qui a une fréquence de 100Hz, +// sans charger inutilement le CPU par du busy-wait (on n'est pas à 10ms près) { - SDL_Delay(20); // On considère un écran à 50Hz + const int Delai = 10; + + Uint32 debut; + debut = SDL_GetTicks(); + // Première attente : le complément de "Delai" millisecondes + SDL_Delay(Delai - (debut % Delai)); + // Si ça ne suffit pas, on complète par des attentes successives de "1ms". + // (Remarque, Windows arrondit généralement aux 10ms supérieures) + while (SDL_GetTicks() / Delai == debut / Delai) + { + SDL_Delay(1); + } } void Passer_en_mode_texte(byte Nb_lignes)