Grafika bufora ramki Linux i VSync

Tworzę grę w C, która działa na buforze ramki Linux. Do tej pory mam czerwony kwadrat 100x100, który porusza się razem z myszą, podobnie jak wskaźnik. Zaimplementowałem podwójne buforowanie i działa ono poprawnie (kwadrat nie miga). Problem polega na tym, że w poziomie dochodzi do rozerwania. Chodzi mi o to, że kiedy kwadrat porusza się na osi x, to jest on podzielony poziomo, a jedna jego część przesuwa się slithgly bardziej niż druga. To „zgrywanie” powoli rozchodzi się od góry do dołu na placu, jeśli będę go ciągle przesuwał.

Myślę, że tak się dzieje, ponieważ sprzęt odczytuje bufor ramki w momencie, gdy kopiuję podwójny bufor do głównego bufora.

Próbowałem zwalczyć ten problem za pomocą ioctl FBIO_WAITFORVSYNC, ale bez powodzenia.

Jakieś pomysły, w jaki sposób mogę wykonać VSync na buforze ramki? Dodaj szczegóły do ​​swoich wyjaśnień, ponieważ po raz pierwszy programuję takie rzeczy na systemie operacyjnym Linux, więc mogę nie rozumieć inaczej.

Oto mój kod:http://pastebin.com/KJ4iaVEL

questionAnswers(2)

yourAnswerToTheQuestion