static void* DEFAULT_BUFFER;
DEFAULT_BUFFER = SCREEN_BASE_ADDRESS;
- Code: Select all
if (buf != ((volatile unsigned*)(DEFAULT_BUFFER)))
{
free(buf);
}
else
{
buf = *((volatile unsigned**)0xC0000010);
*((volatile unsigned**)0xC0000010) = ((volatile unsigned*)(DEFAULT_BUFFER));
free(buf);
}
Donc à part si vraiment je suis débile léger, DEFAULT_BUFFER est bien initialisé comme étant le buffer par défaut (son initialisation est dans le initDoubleBuffering() qui n'est lancé qu'une seule fois et avant toute modification des buffers).
Et ensuite, dans la fonction quit(), si le buffer sur lequel on est entrain de dessiner n'est pas le buffer par défaut, alors on le free (et du coup le buffer final est bien le buffer de départ), et sinon, on se débrouille pour remettre le buffer courant au buffer de départ, et on free, on retombe toujours bien sur le bon buffer...
C'est pour ça que je ne comprends pas...