Mistä ihmeestä voi johtua, että SDL:n SDL_PollEvent
-funktio ei havaitse MOUSEDOWN-tapahtumaa, kuin täysin satunnaisten ja epäsäännöllisten klikkaussarjojen jälkeen. Eli hiirtä saattaa joutua klikkaamaan esim. neljä tai kymmenen kertaa, ennen kuin tapahtuma rekisteröidään. Vika ei ole myöskään hiiressä, sillä olen tarkistanut asian useammalla eri hiirellä sekä koneella.
Toteutus on tälläinen:
while ( SDL_PollEvent( &this->tapahtuma ) ) { if ( this->tapahtuma.type == SDL_MOUSEBUTTONDOWN ) { std::cout << "Hiiri painettu!" << std::endl; } }
tapahtuma
-muuttuja on luokan attribuutti ja se on tyyppiä SDL_Event.
Edit. Muuntyyppiset tapahtumat se tosin osaa handlata ihan oikein...
Ja ihan varmastiko tuo SDL_PollEvent on ainoa kohta, jossa luet syötteitä?
Ilmeisesti, sitä ei sitten saa kutsua kuin yhdestä kohtaa... Luen nimittäin näppäimistö syötettä toisessa kohtaa...
Mistähän sitten kuvittelit SDL_PollEventin tietävän, mitä syötteitä haluat juuri tuossa silmukassa lukea? Tietenkin se lukee kaikki syötteet järjestyksessä. Jos on jostain syystä tarpeen saada erilaiset syötteet eri silmukoihin, voit tehdä varsinaiseen lukemiseen silmukan, joka vain lajittelee syötteet vaikka pariin jonoon (std::queue<SDL_Event> keyboard, mouse;
), joista sitten saat ne luettua "erikseen". Tässä on kuitenkin pidemmän päälle sellainen ongelma, että syötteiden aikajärjestys menee sekaisin (eli et pysty suoraviivaisesti tunnistamaan esim. hiiren liikutusta näppäin pohjassa).
Aihe on jo aika vanha, joten et voi enää vastata siihen.