36 lines
1023 B
C
36 lines
1023 B
C
|
#include "event.h"
|
||
|
#include "message.h"
|
||
|
#include "screen.h"
|
||
|
|
||
|
CLIENT_EVENT* cl_create_event(CLIENT_EVENT* event, CLIENT_TIMER* timer, CLIENT_SCREEN* screen)
|
||
|
{
|
||
|
if(!event)
|
||
|
{
|
||
|
event = (CLIENT_EVENT*)malloc(sizeof(CLIENT_EVENT));
|
||
|
show_message_error(event, "Failed to allocate space for CLIENT_EVENT");
|
||
|
}
|
||
|
|
||
|
event->queue = al_create_event_queue();
|
||
|
show_message_error(event->queue, "Failed to create Allegro event");
|
||
|
|
||
|
al_register_event_source(event->queue, al_get_keyboard_event_source());
|
||
|
al_register_event_source(event->queue, al_get_mouse_event_source());
|
||
|
if(screen)
|
||
|
al_register_event_source(event->queue, al_get_display_event_source(screen->display));
|
||
|
if(timer)
|
||
|
al_register_event_source(event->queue, al_get_timer_event_source(timer->al_timer));
|
||
|
|
||
|
return event;
|
||
|
}
|
||
|
|
||
|
void cl_free_event(CLIENT_EVENT* event)
|
||
|
{
|
||
|
cl_destroy_event(event);
|
||
|
free(event);
|
||
|
};
|
||
|
|
||
|
void cl_destroy_event(CLIENT_EVENT* event)
|
||
|
{
|
||
|
al_destroy_event_queue(event->queue);
|
||
|
}
|