Implemented a time simulator for Wait_VBL()
git-svn-id: svn://pulkomandy.tk/GrafX2/trunk@166 416bcca6-2ee7-4201-b75f-2eb2f807beb1
This commit is contained in:
		
							parent
							
								
									7f67d41f86
								
							
						
					
					
						commit
						e219797b16
					
				
							
								
								
									
										17
									
								
								divers.c
									
									
									
									
									
								
							
							
						
						
									
										17
									
								
								divers.c
									
									
									
									
									
								
							@ -336,9 +336,22 @@ void Initialiser_chrono(dword Delai)
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void Wait_VBL(void)
 | 
					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)
 | 
					void Passer_en_mode_texte(byte Nb_lignes)
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user