hwechtla-tl:
Reaaliaikainen ruudunpäivitys
Tehty näin:
- Alustettaessa otetaan selville senhetkinen aika (time.time(), käytännössä gettimeofday(2)), ja päätetään sen perusteella, milloin on seuraava päivityskierros (senhetkinen aika + peruspäivitysintervalli)
- Odotetaan näppäimenpainallusta enintään niin kauan, kuin seuraavaan päivityskierrokseen on aikaa (select.select(), käytännössä select(2))
- Aina, jos näppäimenpainallus on tullut (vaikkei sitä olisi edes odotettu), käsitellään se
- Aina, jos seuraavan päivityskierroksen aika on mennyt ohi (vaikka näppäintä olisi painettu), ajetaan päivityskierros. Sitten merkitään seuraava päivityskierros peruspäivitysintervallia kauemmaksi (huom. ei kauemmaksi tästä hetkestä vaan kauemmaksi viime päivityskierrosajasta. Muuten päivityskierroksen hitaus vaikuttaa päivityskierrosten varsinaiseen ajastukseen.)
Toteutus: http://sange.fi/~atehwa/pimputin/inputtimer.py
kategoria: ohjelmointi
kommentoi
(viimeksi muutettu 27.06.2005 15:41)