Removed Wait_VBL. Was only used for slowing down things. Used SDL_Delay(1) instead, which let the OS handle other things. We should get about 10-20ms latency with that. Scrollbars may be slightly faster. The only place where this could be a problem is discontinuous freehand. If the current way it works isn't good, look at the "Chrono" functions (like the spray) instead.

git-svn-id: svn://pulkomandy.tk/GrafX2/trunk@799 416bcca6-2ee7-4201-b75f-2eb2f807beb1
This commit is contained in:
Adrien Destugues
2009-05-12 18:00:19 +00:00
parent 7a847be4ec
commit 3c0a940301
7 changed files with 18 additions and 41 deletions

23
misc.c
View File

@@ -125,7 +125,7 @@ void Wait_end_of_click(void)
{
// On désactive tous les raccourcis clavier
while(Mouse_K) if(!Get_input()) Wait_VBL();
while(Mouse_K) if(!Get_input()) SDL_Delay(1);
}
void Hide_current_image_with_stencil(byte color, byte * stencil)
@@ -170,25 +170,6 @@ void Init_chrono(dword delay)
return;
}
void Wait_VBL(void)
// 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)
{
const int delay = 10;
Uint32 debut;
debut = SDL_GetTicks();
// Première attente : le complément de "delay" millisecondes
SDL_Delay(delay - (debut % delay));
// 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() / delay <= debut / delay)
{
SDL_Delay(1);
}
}
void Pixel_in_brush (word x,word y,byte color)
{
*(Brush+y*Brush_width+x)=color;
@@ -645,7 +626,7 @@ void Slider_timer(byte speed)
end = SDL_GetTicks() + speed*10;
do
{
if (!Get_input()) Wait_VBL();
if (!Get_input()) SDL_Delay(1);
} while (Mouse_K == original_mouse_k && SDL_GetTicks()<end);
}