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