int set_close_button_callback(void (*proc)(void));
This function should not generally attempt to exit the program or save any data itself. The function could be called at any time, and there is usually a risk of conflict with the main thread of the program. Instead, you should set a flag during this function, and test it on a regular basis in the main loop of the program.
Pass NULL as the `proc' argument to this function to disable the close button functionality, which is the default state.
Note that Allegro cannot intercept the close button of a DOS box in Windows.
Also note that the supplied callback is also called under MacOS X when the user hits Command-Q or selects "Quit" from the application menu. Example:
volatile int close_button_pressed = FALSE;
void close_button_handler(void)
{
close_button_pressed = TRUE;
}
END_OF_FUNCTION(close_button_handler)
...
allegro_init();
LOCK_FUNCTION(close_button_handler);
set_close_button_callback(close_button_handler);
...
while (!close_button_pressed)
do_stuff();