Der Code dieser Funktion ist:
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;
}
Und SDL_GetMouse
gerade zurück Adresse der statischen globalen Variablen. Daher gibt es nichts unsicher mit ihm, aber es gibt keine Unteilbarkeit.
Allerdings Ereignisse werden separat verarbeitet. Wenn Sie keine Ereignisse prcess, würde Mausstruktur nicht aktualisiert und SDL_GetMouseState
werden Sie veraltete Werte geben. Dokumentation heißt es ausdrücklich , rufen Sie sollten SDL_PumpEvents
nur in Grafiken Thread (das, das Grafiksystem initialisiert).
Im schlimmsten Fall ist das Lesen Sie vales aus , SDL_GetMouseState
während andere Thread aktualisiert sie. Sie könnten alten Wert, neuen Wert, oder auch eine Mischung aus zwei (zB x von neuen , aber y aus alten) lesen.