---
name: "SDL_SetEventFilter"
section: "3"
platform: "linux"
package: "libsdl3-doc"
version: "3.2.10+ds-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/SDL_SetEventFilter"
---

# SDL\_SetEventFilter(3)

Set up a filter to process all events before they are added to the internal event queue.

## NAME

SDL\_SetEventFilter - Set up a filter to process all events before they are added to the internal event queue.

## HEADER FILE

Defined in SDL3/SDL\_events.h

## SYNOPSIS

```
#include "SDL3/SDL.h"
```

**void SDL\_SetEventFilter(SDL\_EventFilter filter, void \*userdata);**

## DESCRIPTION

If you just want to see events without modifying them or preventing them from being queued, you should use  **SDL\_AddEventWatch** () instead.

If the filter function returns true when called, then the event will be added to the internal queue. If it returns false, then the event will be dropped from the queue, but the internal state will still be updated. This allows selective filtering of dynamically arriving events. **WARNING** : Be very careful of what you do in the event filter function, as it may run in a different thread!

On platforms that support it, if the quit event is generated by an interrupt signal (e.g. pressing Ctrl-C), it will be delivered to the application at the next event poll.

Note: Disabled events never make it to the event filter function; see

**SDL\_SetEventEnabled** ().

Note: Events pushed onto the queue with  **SDL\_PushEvent** () get passed through the event filter, but events pushed onto the queue with

**SDL\_PeepEvents** () do not.

## FUNCTION PARAMETERS

- *filter*

  an  **SDL\_EventFilter**\
    function to call when an event happens.

- *userdata*

  a pointer that is passed to **filter** .

## THREAD SAFETY

It is safe to call this function from any thread.

## AVAILABILITY

This function is available since SDL 3.2.0.

## SEE ALSO

**•**(3), [**SDL\_AddEventWatch**(3)](/SDL_AddEventWatch/3.md), **•**(3), [**SDL\_SetEventEnabled**(3)](/SDL_SetEventEnabled/3.md), **•**(3), [**SDL\_GetEventFilter**(3)](/SDL_GetEventFilter/3.md), **•**(3), [**SDL\_PeepEvents**(3)](/SDL_PeepEvents/3.md), **•**(3), [**SDL\_PushEvent**(3)](/SDL_PushEvent/3.md)
