top of page

5. Attendre pour être prêt !

Pour ne pas rater d’évènements il faut être prêt à les traiter !

Au lieu de traiter (n’importe quand) les évènements du passé, nous allons attendre les évènements du futur pour les traiter dès qu’ils arrivent. Lorsqu’il n’y a pas d’évènements : il n’y rien à faire, le programme est en PAUSE la majeure partie du temps durant cette attente ; cette configuration permet une économie maximale de la ressource CPU.

Voici la structure de cette configuration : il n’y a plus qu’une seule boucle, on attend (avec SDL_WaitEvent() ) un évènement et on le traite dès qu’il arrive, on actualise aussitôt en conséquence, on affiche puis l’on attend l’évènement suivant.

Bougez la souris rapidement maintenant : vous voyez que l’image suit absolument et précisément le curseur de la souris, le programme n’est en pause que lorsqu’il n’y a plus d’évènement. Chaque mouvement de souris est immédiatement traité dans la boucle puis le programme retourne en pause, un nouveau mouvement relance un tour de boucle.

Les valeurs de x sont rapprochées et l’affichage est actualisé sur toutes ces valeurs, il n’y a que quelques ms écoulées entre ces positions.

 

Cette architecture présente les 2 avantages :

- Consommation CPU minimale

- Réactivité immédiate aux évènements

 

Elle peut être utilisée tous les programmes qui réagissent aux évènements de l’utilisateur.

Elle présente cependant un inconvénient : si il n’y a pas d’évènement alors il n’y a pas d’affichage. Ceci est problématique pour afficher des animations autonomes (faire clignoter une image par exemple, etc…).

 

Nous allons voir maintenant une architecture optimale qui supprime cet inconvénient et conserve les 2 avantages vus plus haut !  

    < Page précédente                                                                                                    Sommaire                                                          > Page suivante

bottom of page