|
Size: 2181
Comment: add content from old wiki
|
Size: 2158
Comment: update content
|
| Deletions are marked like this. | Additions are marked like this. |
| Line 20: | Line 20: |
| == Return Value == <<Color2(green,RV is "void" but there is clearly a RV message in the header. ???)>> <<Color2(green,Is this really a RV or just a note on how to set it up?)>> If the filter returns 1, then the event will be added to the internal queue. If it returns 0, 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. |
|
| Line 28: | Line 21: |
| <<Color2(green,Does this belong in Syntax or Remarks instead?)>> | |
| Line 37: | Line 31: |
| If the ^resulting^ filter returns 1, then the event will be added to the internal queue. If it returns 0, 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. |
|
| Line 43: | Line 40: |
| Note: Events pushed onto the queue with [[SDL_PushEvent]]() or [[SDL_PeepEvents]]() do not get passed through the event filter. | <<Color2(green,Should this be noted here? Is this no longer valid in 1.3?)>> *Note: Events pushed onto the queue with [[SDL_PushEvent]]() or [[SDL_PeepEvents]]() do not get passed through the event filter.* |
| Line 48: | Line 46: |
| .[[SDL_PushEvent]] *]] | .[[SDL_PushEvent]] *??? |
DRAFT |
SDL_SetEventFilter
Use this function to set up a filter to process all events before they change internal state and are posted to the internal event queue.
Syntax
void SDL_SetEventFilter(SDL_EventFilter filter,
void* userdata)
Function Parameters
filter |
typedef int (SDLCALL * SDL_EventFilter) (void *userdata, SDL_Event * event); ??? the SDL_!EventFilter to be referenced/run ??? |
userdata |
a pointer filled with user-specified information to be filtered |
Code Examples
green
The filter is protypted as:
int SDL_EventFilter(void *userdata, SDL_Event * event);
You can add your code example here
Remarks
If the resulting filter returns 1, then the event will be added to the internal queue. If it returns 0, 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.
Be very careful of what you do in the event filter function, as it may run in a different thread!
There is one caveat when dealing with the SDL_QUITEVENT event type. The event filter is only called when the window manager desires to close the application window. If the event filter returns 1, then the window will be closed, otherwise the window will remain open if possible.
If the quit event is generated by an interrupt signal, it will bypass the internal queue and be delivered to the application at the next event poll.
green
*Note: Events pushed onto the queue with SDL_PushEvent() or SDL_PeepEvents() do not get passed through the event filter.*
Related Functions
SDL_PeepEvents *???
SDL_PushEvent *???
