---
name: "al_emit_user_event"
section: "3alleg5"
platform: "linux"
package: "allegro5-doc"
version: "2:5.2.10.1+dfsg-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/al_emit_user_event/3alleg5"
---

# al\_emit\_user\_event(3alleg5)

Allegro 5 API

## NAME

al\_emit\_user\_event - Allegro 5 API

## SYNOPSIS

-

  ```
  #include <allegro5/allegro.h>
  bool al_emit_user_event(ALLEGRO_EVENT_SOURCE *src,
     ALLEGRO_EVENT *event, void (*dtor)(ALLEGRO_USER_EVENT *))
  ```

## DESCRIPTION

Emit an event from a user event source. The event source must have been initialised with al\_init\_user\_event\_source(3alleg5). Returns `false` if the event source isn’t registered with any queues, hence the event wouldn’t have been delivered into any queues.

Events are *copied* in and out of event queues, so after this function returns the memory pointed to by `event` may be freed or reused. Some fields of the event being passed in may be modified by the function.

Reference counting will be performed if `dtor` is not NULL. Whenever a copy of the event is made, the reference count increases. You need to call al\_unref\_user\_event(3alleg5) to decrease the reference count once you are done with a user event that you have received from al\_get\_next\_event(3alleg5), al\_peek\_next\_event(3alleg5), al\_wait\_for\_event(3alleg5), etc.

Once the reference count drops to zero `dtor` will be called with a copy of the event as an argument. It should free the resources associated with the event, but *not* the event itself (since it is just a copy).

If `dtor` is NULL then reference counting will not be performed. It is safe, but unnecessary, to call al\_unref\_user\_event(3alleg5) on non-reference counted user events.

You can use al\_emit\_user\_event to emit both user and non-user events from your user event source. Note that emitting input events will not update the corresponding input device states. For example, you may emit an event of type ALLEGRO\_EVENT\_KEY\_DOWN(3alleg5), but it will not update the ALLEGRO\_KEYBOARD\_STATE(3alleg5) returned by al\_get\_keyboard\_state(3alleg5).

## SEE ALSO

ALLEGRO\_USER\_EVENT(3alleg5), al\_unref\_user\_event(3alleg5)
