Codul acestei funcții este:
Uint32
SDL_GetMouseState(int *x, int *y)
{
SDL_Mouse *mouse = SDL_GetMouse();
if (x) {
*x = mouse->x;
}
if (y) {
*y = mouse->y;
}
return mouse->buttonstate;
}
Și SDL_GetMouse
doar se întoarce adresa variabile globale statice. Prin urmare, nu este nimic nesigur cu ea, dar nu există nici o Atomicitate.
Cu toate acestea evenimentele sunt procesate separat. Dacă nu prcess evenimente, structura mouse - ul nu ar actualiza și SDL_GetMouseState
vă va da valori depășite. Documentația menționează în mod explicit ar trebui să apel SDL_PumpEvents
numai în fir grafic (cel care inițializează sistemul grafic).
Scenariul cel mai rău caz este citești Văi din SDL_GetMouseState
timp ce alt fir actualizează. Ai putea citi valoarea vechi, valoare nouă, sau chiar un amestec de două ( de exemplu , x din nou , dar de la y vechi).