Ο κώδικας αυτής της λειτουργίας είναι:
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;
}
Και SDL_GetMouse
ακριβώς επιστρέφει τη διεύθυνση του στατικού καθολική μεταβλητή. Ως εκ τούτου, δεν υπάρχει τίποτα μη ασφαλή με αυτό, αλλά δεν υπάρχει ατομικότητα.
Ωστόσο, τα γεγονότα επεξεργάζονται ξεχωριστά. Αν δεν η Διαδικασία γεγονότα, η δομή του ποντικιού δεν θα ενημερώσει και SDL_GetMouseState
θα σας δώσει ξεπερασμένη τιμές. Τεκμηρίωση δηλώνει ρητά θα πρέπει να καλέσετε SDL_PumpEvents
μόνο στο νήμα γραφικών (αυτό που σε εκκίνηση του συστήματος γραφικών).
Χειρότερη περίπτωση αυτή θα διαβάζει κοιλάδες από SDL_GetMouseState
ενώ άλλο νήμα ενημερώσεις. Θα μπορούσατε να διαβάσετε παλιά τιμή, νέα τιμή, ή ακόμα και ένα μείγμα από δύο (π.χ. x από νέους αλλά και y από το παλιό).