Observe que no exemplo ele não usa funções dentro da callback. Há uma recomendação do allegro que as operações em callbacks sejam as mais simples possíveis para evitar problemas.
Usando esta função do exemplo você ainda pode destruir seus bitmaps. Exemplo:
Code:
void close_button_handler(void)
{
close_button_pressed = TRUE;
}
END_OF_FUNCTION(close_button_handler)
...
BITMAP* buffer = create_bitmap(SCREEN_W, SCREEN_H);
...
while(!close_button_pressed)
{
}
...
destroy_bitmap(buffer); // Aqui!!
A callback apenas altera o valor de uma variável
close_button_pressed. O que vai acontecer é que, quando o usuário clicar no "X" ele vai setar o valor da variável para true, fazendo com que ele saia do while e
não do programa. Sendo assim, após o while você pode destruir todos os bitmaps alocados e realizar outros procedimentos de finalização.