#include <stdio.h>
#include <allegro5/allegro.h>

int main(int argc, char **argv)
{
	ALLEGRO_DISPLAY *display;
	ALLEGRO_EVENT_QUEUE *queue;

	ALLEGRO_EVENT event;
	int display_width = 640;
	int display_height = 480;
	
	if (!al_init())
	{
		fprintf(stderr,"Could not init Allegro.\n");
		return 1;
	}

	al_install_keyboard();
	al_install_mouse();

	display = al_create_display(display_width, display_height);
	if (!display)
	{
		fprintf(stderr,"Could not create display.\n");
		return 1;
	}
	
	queue = al_create_event_queue();
	al_register_event_source(queue, al_get_keyboard_event_source());
	al_register_event_source(queue, al_get_display_event_source(display));
	al_register_event_source(queue, al_get_mouse_event_source());

	while (true)
	{
		static int numevents;

		al_wait_for_event(queue, &event);
		{
			numevents++;
			printf("Got event #%d\n",numevents);
			fflush(stdout);
			switch (event.type)
			{
				case ALLEGRO_EVENT_DISPLAY_CLOSE:
					goto done;

				case ALLEGRO_EVENT_KEY_CHAR:
				{
					if (event.keyboard.keycode == ALLEGRO_KEY_ESCAPE)
					{
						goto done;
					}
				}

			}
		}
	}

done:
	al_destroy_event_queue(queue);
	return 0;
}
