DragonFly On-Line Manual Pages
al_init_user_event_source(3) al_init_user_event_source(3)
NAME
al_init_user_event_source - Allegro 5 API
SYNOPSIS
#include <allegro5/allegro.h>
void al_init_user_event_source(ALLEGRO_EVENT_SOURCE *src)
DESCRIPTION
Initialise an event source for emitting user events. The space for the
event source must already have been allocated.
One possible way of creating custom event sources is to derive other
structures with ALLEGRO_EVENT_SOURCE at the head, e.g.
typedef struct THING THING;
struct THING {
ALLEGRO_EVENT_SOURCE event_source;
int field1;
int field2;
/* etc. */
};
THING *create_thing(void)
{
THING *thing = malloc(sizeof(THING));
if (thing) {
al_init_user_event_source(&thing->event_source);
thing->field1 = 0;
thing->field2 = 0;
}
return thing;
}
The advantage here is that the THING pointer will be the same as the
ALLEGRO_EVENT_SOURCE pointer. Events emitted by the event source will
have the event source pointer as the source field, from which you can
get a pointer to a THING by a simple cast (after ensuring checking the
event is of the correct type).
However, it is only one technique and you are not obliged to use it.
The user event source will never be destroyed automatically. You must
destroy it manually with al_destroy_user_event_source(3).
SEE ALSO
ALLEGRO_EVENT_SOURCE(3), al_destroy_user_event_source(3),
al_emit_user_event(3), ALLEGRO_USER_EVENT(3)
Allegro reference manual al_init_user_event_source(3)