Koden til denne funksjonen er:
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;
}
Og SDL_GetMouse
bare returnerer adressen til statisk global variabel. Derfor er det ikke noe usikre med det, men det er ingen atomicity.
Imidlertid hendelsene blir behandlet separat. Hvis du ikke prcess hendelser, ville mus struktur ikke oppdatere og SDL_GetMouseState
vil gi deg utdaterte verdier. Dokumentasjon sier eksplisitt at du skal ringe SDL_PumpEvents
bare i grafikk tråden (den som initialisert grafikk system).
Worst case scenario er at du leser Vales fra SDL_GetMouseState
mens andre tråden oppdaterer den. Du kan lese gamle verdien, ny verdi, eller en blanding av to (f.eks x fra ny, men y fra gamle).