Fonction SDL_AddTimer
SDL_AddTimer -- Ajoute un timer qui appelera une fonction de rappel au bout du nombre de millisecondes spécifié.
Syntaxe
SDL_TimerID SDL_AddTimer(Uint32 interval, SDL_NewTimerCallback callback, void* param);
Fonction de rappel
/* definition du type pour la "nouvelle" fonction de rappel */
typedef Uint32 (*SDL_NewTimerCallback)(Uint32 interval, void* param);
Description
Ajoute une fonction de rappel à lancer au bout du nombre de millisecondes spécifié. La fonction de rappel reçoit la période actuelle du timer (interval) ainsi que le paramètre param spécifié lors de l'appel à SDL_AddTimer et doit renvoyer la nouvelle période du timer pour l'appel suivant. Si la valeur de retour de la fonction de rappel est la même que la valeur passée en paramètre, le timer continue au même rythme. Si la valeur retournée est 0, le timer est arrêté.
Une autre façon d'annuler un timer actif est d'appeler SDL_RemoveTimer avec la valeur identifiant le timer (renvoyée par SDL_AddTimer).
La fonction de rappel peut s'éxecuter dans un thread différent de votre programme principal, et ne devrait donc appeler aucune autre fonction SDL directement. Cependant, vous pourrez toujours appeler SDL_PushEvent.
Note : Si vous utilisez cette fonction, vous devez passer SDL_INIT_TIMER à SDL_Init.
Paramètres
interval [in]
- La période choisie pour le timer, en millisecondes. La granularité du timer dépend de la plateforme, mais vous pouvez supposer qu'elle est d'au moins 10 ms, car c'est le nombre le plus fréquent. Cela signifie que si vous demandez un timer de 16 ms, votre fonction de rappel s'éxecutera approximativement 20 ms plus tard sur un système peu chargé. Si vous vouliez générer un événement pour obtenir 30 images par secondes (toutes les 33 ms), vous devrez créer un timer de 30 ms (voir l'exemple ci-dessous).
callback [in]
- La fonction de rappel SDL qui sera appelée au bout de la période donnée.
param [in]
- Le paramètre utilisateur passé à la fonction de rappel
Valeur de retour
NULL
- Si erreur
SDL_TimerID
- Si succès. La fonction renvoie la valeur identifiant le timer créé
Voir aussi
SDL_RemoveTimer, SDL_PushEvent
Example
1 /* Demarre le timer; la fonction de rappel sera lancee apres le temps donne */
2
3 delay = (33 / 10) * 10; /* Pour arrondir à 10 ms près */
4 my_timer_id = SDL_AddTimer(delay, my_callbackfunc, my_callback_param);
5
6 ...
7
8 Uint32 my_callbackfunc(Uint32 interval, void *param)
9 {
10 SDL_Event event;
11 SDL_UserEvent userevent;
12
13 /* Dans cet exemple, notre fonction de rappel pousse
14 un evenement SDL_USEREVENT dans la file... */
15
16 userevent.type = SDL_USEREVENT;
17 userevent.code = 0;
18 userevent.data1 = NULL;
19 userevent.data2 = NULL;
20
21 event.type = SDL_USEREVENT;
22 event.user = userevent;
23
24 SDL_PushEvent(&event);
25
26 /* ... et demande a etre rappelee au bout du meme temps */
27 return(interval);
28 }
Requis
Header |
SDL.h |
Version |
1.2.13 |
Shared object |
libSDL.so |
DLL |
SDL.dll |
