Linux framebuffer graphics y VSync

Estoy haciendo un juego en C que funciona en el framebuffer de Linux. Hasta ahora tengo un cuadrado rojo de 100x100 que se mueve junto con el mouse, como un puntero. He implementado el búfer doble y funciona correctamente (el cuadrado no parpadea). El problema es que hay bastantes desgarros que ocurren horizontalmente. Lo que quiero decir con eso es que cuando el cuadrado se mueve en el eje x, es como si estuviera dividido horizontalmente, y una parte de él avanza un poco más que la otra. Este "rip" se propaga lentamente de arriba a abajo en el cuadrado si sigo moviéndolo.

Creo que sucede porque el hardware lee el framebuffer en el momento en que copio el búfer doble en el búfer principal.

He intentado combatir el problema con el iBtl de FBIO_WAITFORVSYNC, pero no he tenido éxito.

¿Alguna idea de cómo podría hacer VSync en el framebuffer? Agregue detalles a sus explicaciones, ya que esta es la primera vez que programo este tipo de cosas en un sistema operativo basado en Linux, por lo que podría no entender lo contrario.

Aquí está mi código:http://pastebin.com/KJ4iaVEL