SDL2: SDL_GetMouseState () धागे की सुरक्षित है?

वोट
34

है SDL_GetMouseStateसमारोह धागा सुरक्षित है?

और के उदाहरण में SDL_GetMouseState, SDL_PumpEventsहै, जो धागे की असुरक्षित माना जाता है, प्रयोग किया जाता है। यदि SDL_GetMouseStateधागे की सुरक्षित है, मैं का उपयोग करने की क्या ज़रूरत है SDL_PumpEventsजो यह ठीक से काम करने के लिए धागा असुरक्षित इसके साथ है?

25/01/2016 को 20:20
उपयोगकर्ता
अन्य भाषाओं में...                            


1 जवाब

वोट
1

इस समारोह का कोड है:

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सिर्फ स्थिर वैश्विक चर का पता देता है। इसलिए, इसके साथ असुरक्षित कुछ भी नहीं है, लेकिन कोई atomicity है।

हालांकि घटनाओं अलग संसाधित किया जाता। आप घटनाओं prcess नहीं है, तो माउस संरचना को अपडेट नहीं होता और SDL_GetMouseStateआप पुराने मान दे देंगे। प्रलेखन स्पष्ट रूप से कहा कि आप कॉल करना चाहिए SDL_PumpEventsकेवल ग्राफिक्स धागा (एक है कि ग्राफिक्स प्रणाली initialised) में।

सबसे खराब स्थिति आप से vales पढ़ रही है SDL_GetMouseStateअन्य धागा यह अद्यतन करता है। आप पुराने मूल्य, नए मूल्य, या यहां तक कि एक (नई लेकिन पुराने से y से जैसे एक्स) दो के मिश्रण पढ़ सकते हैं।

26/01/2016 को 02:18
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more