Gráficos de framebuffer do Linux e VSync

Eu estou fazendo um jogo em C que funciona no framebuffer linux. Até agora eu tenho um quadrado vermelho de 100x100 que se move em conjunto com o mouse, assim como um ponteiro. Eu implementei buffer duplo e ele funciona corretamente (o quadrado não pisca). O problema é que há muito rasgo acontecendo horizontalmente. O que quero dizer com isso é que, quando o quadrado se move no eixo x, é como se ele fosse dividido horizontalmente e uma parte dele avançasse mais do que o outro. Este "rip" se propaga lentamente de cima para baixo no quadrado, se eu continuar a movê-lo.

Eu acredito que isso acontece porque o hardware lê o framebuffer durante o momento em que copio o buffer duplo no buffer principal.

Eu tentei combater o problema com o ioctl FBIO_WAITFORVSYNC, mas sem sucesso.

Alguma idéia de como eu poderia fazer VSync no framebuffer? Por favor, adicione detalhes às suas explicações, pois é a primeira vez que estou programando essas coisas em um SO baseado em Linux, então talvez eu não entenda o contrário.

Aqui está o meu código:http://pastebin.com/KJ4iaVEL

questionAnswers(2)

yourAnswerToTheQuestion