SDL_events.h File Reference
`#include "SDL_stdinc.h"`
`#include "SDL_error.h"`
`#include "SDL_video.h"`
`#include "SDL_keyboard.h"`
`#include "SDL_mouse.h"`
`#include "SDL_joystick.h"`
`#include "SDL_gamecontroller.h"`
`#include "SDL_quit.h"`
`#include "SDL_gesture.h"`
`#include "SDL_touch.h"`
`#include "begin_code.h"`
`#include "close_code.h"`
Include dependency graph for SDL_events.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

## Data Structures

struct | SDL_CommonEvent
| Fields shared by every event. More...
struct | SDL_WindowEvent
| Window state change event data (event.window.*) More...
struct | SDL_KeyboardEvent
| Keyboard button event structure (event.key.*) More...
struct | SDL_TextEditingEvent
| Keyboard text editing event structure (event.edit.*) More...
struct | SDL_TextInputEvent
| Keyboard text input event structure (event.text.*) More...
struct | SDL_MouseMotionEvent
| Mouse motion event structure (event.motion.*) More...
struct | SDL_MouseButtonEvent
| Mouse button event structure (event.button.*) More...
struct | SDL_MouseWheelEvent
| Mouse wheel event structure (event.wheel.*) More...
struct | SDL_JoyAxisEvent
| Joystick axis motion event structure (event.jaxis.*) More...
struct | SDL_JoyBallEvent
| Joystick trackball motion event structure (event.jball.*) More...
struct | SDL_JoyHatEvent
| Joystick hat position change event structure (event.jhat.*) More...
struct | SDL_JoyButtonEvent
| Joystick button event structure (event.jbutton.*) More...
struct | SDL_JoyDeviceEvent
| Joystick device event structure (event.jdevice.*) More...
struct | SDL_ControllerAxisEvent
| Game controller axis motion event structure (event.caxis.*) More...
struct | SDL_ControllerButtonEvent
| Game controller button event structure (event.cbutton.*) More...
struct | SDL_ControllerDeviceEvent
| Controller device event structure (event.cdevice.*) More...
struct | SDL_AudioDeviceEvent
| Audio device event structure (event.adevice.*) More...
struct | SDL_TouchFingerEvent
| Touch finger event structure (event.tfinger.*) More...
struct | SDL_MultiGestureEvent
| Multiple Finger Gesture Event (event.mgesture.*) More...
struct | SDL_DollarGestureEvent
| Dollar Gesture Event (event.dgesture.*) More...
struct | SDL_DropEvent
| An event used to request a file open by the system (event.drop.*) This event is enabled by default, you can disable it with SDL_EventState(). More...
struct | SDL_QuitEvent
| The "quit requested" event. More...
struct | SDL_OSEvent
| OS Specific event. More...
struct | SDL_UserEvent
| A user-defined event type (event.user.*) More...
struct | SDL_SysWMEvent
| A video driver dependent system event (event.syswm.*) This event is disabled by default, you can enable it with SDL_EventState() More...
union | SDL_Event
| General event structure. More...

## Macros

#define | SDL_RELEASED 0
#define | SDL_PRESSED 1
#define | SDL_TEXTEDITINGEVENT_TEXT_SIZE (32)
#define | SDL_TEXTINPUTEVENT_TEXT_SIZE (32)
#define | SDL_GetEventState(type) SDL_EventState(type, SDL_QUERY)

## Typedefs

typedef int(* | SDL_EventFilter) (void *userdata, SDL_Event *event)

## Enumerations

enum

SDL_EventType {
SDL_FIRSTEVENT = 0,
SDL_QUIT = 0x100,
SDL_APP_TERMINATING,
SDL_APP_LOWMEMORY,
SDL_APP_WILLENTERBACKGROUND,
SDL_APP_DIDENTERBACKGROUND,
SDL_APP_WILLENTERFOREGROUND,
SDL_APP_DIDENTERFOREGROUND,
SDL_WINDOWEVENT = 0x200,
SDL_SYSWMEVENT,
SDL_KEYDOWN = 0x300,
SDL_KEYUP,
SDL_TEXTEDITING,
SDL_TEXTINPUT,
SDL_KEYMAPCHANGED,
SDL_MOUSEMOTION = 0x400,
SDL_MOUSEBUTTONDOWN,
SDL_MOUSEBUTTONUP,
SDL_MOUSEWHEEL,
SDL_JOYAXISMOTION = 0x600,
SDL_JOYBALLMOTION,
SDL_JOYHATMOTION,
SDL_JOYBUTTONDOWN,
SDL_JOYBUTTONUP,
SDL_JOYDEVICEADDED,
SDL_JOYDEVICEREMOVED,
SDL_CONTROLLERAXISMOTION = 0x650,
SDL_CONTROLLERBUTTONDOWN,
SDL_CONTROLLERBUTTONUP,
SDL_CONTROLLERDEVICEADDED,
SDL_CONTROLLERDEVICEREMOVED,
SDL_CONTROLLERDEVICEREMAPPED,
SDL_FINGERDOWN = 0x700,
SDL_FINGERUP,
SDL_FINGERMOTION,
SDL_DOLLARGESTURE = 0x800,
SDL_DOLLARRECORD,
SDL_MULTIGESTURE,
SDL_CLIPBOARDUPDATE = 0x900,
SDL_DROPFILE = 0x1000,
SDL_AUDIODEVICEADDED = 0x1100,
SDL_AUDIODEVICEREMOVED,
SDL_RENDER_TARGETS_RESET = 0x2000,
SDL_RENDER_DEVICE_RESET,
SDL_USEREVENT = 0x8000,
SDL_LASTEVENT = 0xFFFF
}

| The types of events that can be delivered. More...

## Functions

void | SDL_PumpEvents (void)
SDL_bool | SDL_HasEvent (Uint32 type)
SDL_bool | SDL_HasEvents (Uint32 minType, Uint32 maxType)
void | SDL_FlushEvent (Uint32 type)
void | SDL_FlushEvents (Uint32 minType, Uint32 maxType)
int | SDL_PollEvent (SDL_Event *event)
| Polls for currently pending events. More...
int | SDL_WaitEvent (SDL_Event *event)
| Waits indefinitely for the next available event. More...
int | SDL_WaitEventTimeout (SDL_Event *event, int timeout)
| Waits until the specified timeout (in milliseconds) for the next available event. More...
int | SDL_PushEvent (SDL_Event *event)
| Add an event to the event queue. More...
void | SDL_SetEventFilter (SDL_EventFilter filter, void *userdata)
SDL_bool | SDL_GetEventFilter (SDL_EventFilter *filter, void **userdata)
void | SDL_AddEventWatch (SDL_EventFilter filter, void *userdata)
void | SDL_DelEventWatch (SDL_EventFilter filter, void *userdata)
void | SDL_FilterEvents (SDL_EventFilter filter, void *userdata)
Uint32 | SDL_RegisterEvents (int numevents)
enum | SDL_eventaction { SDL_ADDEVENT, SDL_PEEKEVENT, SDL_GETEVENT }
int | SDL_PeepEvents (SDL_Event *events, int numevents, SDL_eventaction action, Uint32 minType, Uint32 maxType)
#define | SDL_QUERY -1
#define | SDL_IGNORE 0
#define | SDL_DISABLE 0
#define | SDL_ENABLE 1
Uint8 | SDL_EventState (Uint32 type, int state)

## Detailed Description

Include file for SDL event handling.

Definition in file SDL_events.h.

## Macro Definition Documentation

#define SDL_DISABLE 0

Definition at line 717 of file SDL_events.h.

Referenced by mouse_showCursor(), SDL_EventState(), SDL_JoystickEventState(), SDL_StartEventLoop(), and SDL_StopTextInput().

#define SDL_ENABLE 1

Definition at line 718 of file SDL_events.h.

Referenced by _changeCursorVisibility(), main(), mouse_showCursor(), SDL_AddAudioDevice(), SDL_EventState(), SDL_GameControllerEventState(), SDL_IsTextInputActive(), SDL_JoystickEventState(), SDL_OpenedAudioDeviceDisconnected(), SDL_PrivateGameControllerAxis(), SDL_PrivateGameControllerButton(), SDL_PrivateJoystickAxis(), SDL_PrivateJoystickBall(), SDL_PrivateJoystickButton(), SDL_PrivateJoystickHat(), SDL_PrivateSendMouseMotion(), SDL_SendAppEvent(), SDL_SendClipboardUpdate(), SDL_SendDropFile(), SDL_SendEditingText(), SDL_SendKeyboardKey(), SDL_SendKeyboardText(), SDL_SendMouseButton(), SDL_SendMouseWheel(), SDL_SendSysWMEvent(), SDL_SendTouch(), SDL_SendTouchMotion(), SDL_SendWindowEvent(), SDL_StartTextInput(), SDL_SYS_AddJoystickDevice(), and SDL_SYS_RemoveJoystickDevice().

#define SDL_GetEventState | ( |  | type | ) | SDL_EventState(type, SDL_QUERY)

Definition at line 731 of file SDL_events.h.

Referenced by SDL_AddAudioDevice(), SDL_IsTextInputActive(), SDL_OpenedAudioDeviceDisconnected(), SDL_PrivateGameControllerAxis(), SDL_PrivateGameControllerButton(), SDL_PrivateJoystickAxis(), SDL_PrivateJoystickBall(), SDL_PrivateJoystickButton(), SDL_PrivateJoystickHat(), SDL_PrivateSendMouseMotion(), SDL_SendAppEvent(), SDL_SendClipboardUpdate(), SDL_SendDropFile(), SDL_SendEditingText(), SDL_SendKeyboardKey(), SDL_SendKeyboardText(), SDL_SendMouseButton(), SDL_SendMouseWheel(), SDL_SendSysWMEvent(), SDL_SendTouch(), SDL_SendTouchMotion(), SDL_SendWindowEvent(), SDL_SYS_AddJoystickDevice(), and SDL_SYS_RemoveJoystickDevice().

#define SDL_IGNORE 0

Definition at line 716 of file SDL_events.h.

Referenced by main(), and SDL_GameControllerEventState().

#define SDL_PRESSED 1

Definition at line 50 of file SDL_events.h.

Referenced by SDL_BApp::_HandleKey(), SDL_BWin::DispatchMessage(), loop(), SDL_GameControllerEventWatcher(), SDL_PrivateGameControllerButton(), SDL_PrivateJoystickButton(), SDL_ResetKeyboard(), SDL_SendKeyboardKey(), SDL_SendMouseButton(), SDL_SYS_MFIJoystickUpdate(), and WINRT_OnBackButtonPressed().

#define SDL_QUERY -1

Definition at line 715 of file SDL_events.h.

Referenced by _changeCursorVisibility(), mouse_showCursor(), SDL_GameControllerEventState(), SDL_JoystickEventState(), SDL_PumpEvents(), and SDL_SetKeyboardFocus().

#define SDL_RELEASED 0

Definition at line 49 of file SDL_events.h.

Referenced by SDL_BWin::DispatchMessage(), SDL_GameControllerEventWatcher(), SDL_PrivateGameControllerButton(), SDL_PrivateJoystickButton(), SDL_ResetKeyboard(), SDL_ResetMouse(), SDL_SendKeyboardKey(), SDL_SendMouseButton(), SDL_SYS_MFIJoystickUpdate(), and WINRT_OnBackButtonPressed().

#define SDL_TEXTEDITINGEVENT_TEXT_SIZE (32)

Definition at line 199 of file SDL_events.h.

#define SDL_TEXTINPUTEVENT_TEXT_SIZE (32)

Definition at line 214 of file SDL_events.h.

## Typedef Documentation

typedef int( * SDL_EventFilter) (void *userdata, SDL_Event *event)

Definition at line 658 of file SDL_events.h.

## Enumeration Type Documentation

enum SDL_eventaction

Enumerator
SDL_ADDEVENT |
SDL_PEEKEVENT |
SDL_GETEVENT |

Definition at line 572 of file SDL_events.h.

{
SDL_ADDEVENT,
SDL_PEEKEVENT,
SDL_GETEVENT
} SDL_eventaction;
SDL_eventaction
SDL_eventaction
Definition: SDL_events.h:572
SDL_PEEKEVENT
Definition: SDL_events.h:575
SDL_GETEVENT
Definition: SDL_events.h:576
SDL_ADDEVENT
Definition: SDL_events.h:574

enum SDL_EventType

The types of events that can be delivered.

Enumerator
SDL_FIRSTEVENT | Unused (do not remove)
SDL_QUIT | User-requested quit
SDL_APP_TERMINATING | The application is being terminated by the OS Called on iOS in applicationWillTerminate() Called on Android in onDestroy()
SDL_APP_LOWMEMORY | The application is low on memory, free memory if possible. Called on iOS in applicationDidReceiveMemoryWarning() Called on Android in onLowMemory()
SDL_APP_WILLENTERBACKGROUND | The application is about to enter the background Called on iOS in applicationWillResignActive() Called on Android in onPause()
SDL_APP_DIDENTERBACKGROUND | The application did enter the background and may not get CPU for some time Called on iOS in applicationDidEnterBackground() Called on Android in onPause()
SDL_APP_WILLENTERFOREGROUND | The application is about to enter the foreground Called on iOS in applicationWillEnterForeground() Called on Android in onResume()
SDL_APP_DIDENTERFOREGROUND | The application is now interactive Called on iOS in applicationDidBecomeActive() Called on Android in onResume()
SDL_WINDOWEVENT | Window state change
SDL_SYSWMEVENT | System specific event
SDL_KEYDOWN | Key pressed
SDL_KEYUP | Key released
SDL_TEXTEDITING | Keyboard text editing (composition)
SDL_TEXTINPUT | Keyboard text input
SDL_KEYMAPCHANGED | Keymap changed due to a system event such as an input language or keyboard layout change.
SDL_MOUSEMOTION | Mouse moved
SDL_MOUSEBUTTONDOWN | Mouse button pressed
SDL_MOUSEBUTTONUP | Mouse button released
SDL_MOUSEWHEEL | Mouse wheel motion
SDL_JOYAXISMOTION | Joystick axis motion
SDL_JOYBALLMOTION | Joystick trackball motion
SDL_JOYHATMOTION | Joystick hat position change
SDL_JOYBUTTONDOWN | Joystick button pressed
SDL_JOYBUTTONUP | Joystick button released
SDL_JOYDEVICEADDED | A new joystick has been inserted into the system
SDL_JOYDEVICEREMOVED | An opened joystick has been removed
SDL_CONTROLLERAXISMOTION | Game controller axis motion
SDL_CONTROLLERBUTTONDOWN | Game controller button pressed
SDL_CONTROLLERBUTTONUP | Game controller button released
SDL_CONTROLLERDEVICEADDED | A new Game controller has been inserted into the system
SDL_CONTROLLERDEVICEREMOVED | An opened Game controller has been removed
SDL_CONTROLLERDEVICEREMAPPED | The controller mapping was updated
SDL_FINGERDOWN |
SDL_FINGERUP |
SDL_FINGERMOTION |
SDL_DOLLARGESTURE |
SDL_DOLLARRECORD |
SDL_MULTIGESTURE |
SDL_CLIPBOARDUPDATE | The clipboard changed
SDL_DROPFILE | The system requests a file open
SDL_AUDIODEVICEADDED | A new audio device is available
SDL_AUDIODEVICEREMOVED | An audio device has been removed.
SDL_RENDER_TARGETS_RESET | The render targets have been reset and their contents need to be updated
SDL_RENDER_DEVICE_RESET | The device has been reset and all textures need to be recreated
SDL_USEREVENT | Events SDL_USEREVENT through SDL_LASTEVENT are for your use, and should be allocated with SDL_RegisterEvents()
SDL_LASTEVENT | This last event is only for bounding internal arrays

Definition at line 55 of file SDL_events.h.

{
SDL_FIRSTEVENT = 0, /**< Unused (do not remove) */
/* Application events */
SDL_QUIT = 0x100, /**< User-requested quit */
/* These application events have special meaning on iOS, see README-ios.md for details */
SDL_APP_TERMINATING, /**< The application is being terminated by the OS
Called on iOS in applicationWillTerminate()
Called on Android in onDestroy()
*/
SDL_APP_LOWMEMORY, /**< The application is low on memory, free memory if possible.
Called on iOS in applicationDidReceiveMemoryWarning()
Called on Android in onLowMemory()
*/
SDL_APP_WILLENTERBACKGROUND, /**< The application is about to enter the background
Called on iOS in applicationWillResignActive()
Called on Android in onPause()
*/
SDL_APP_DIDENTERBACKGROUND, /**< The application did enter the background and may not get CPU for some time
Called on iOS in applicationDidEnterBackground()
Called on Android in onPause()
*/
SDL_APP_WILLENTERFOREGROUND, /**< The application is about to enter the foreground
Called on iOS in applicationWillEnterForeground()
Called on Android in onResume()
*/
SDL_APP_DIDENTERFOREGROUND, /**< The application is now interactive
Called on iOS in applicationDidBecomeActive()
Called on Android in onResume()
*/
/* Window events */
SDL_WINDOWEVENT = 0x200, /**< Window state change */
SDL_SYSWMEVENT, /**< System specific event */
/* Keyboard events */
SDL_KEYDOWN = 0x300, /**< Key pressed */
SDL_KEYUP, /**< Key released */
SDL_TEXTEDITING, /**< Keyboard text editing (composition) */
SDL_TEXTINPUT, /**< Keyboard text input */
SDL_KEYMAPCHANGED, /**< Keymap changed due to a system event such as an
input language or keyboard layout change.
*/
/* Mouse events */
SDL_MOUSEMOTION = 0x400, /**< Mouse moved */
SDL_MOUSEBUTTONDOWN, /**< Mouse button pressed */
SDL_MOUSEBUTTONUP, /**< Mouse button released */
SDL_MOUSEWHEEL, /**< Mouse wheel motion */
/* Joystick events */
SDL_JOYAXISMOTION = 0x600, /**< Joystick axis motion */
SDL_JOYBALLMOTION, /**< Joystick trackball motion */
SDL_JOYHATMOTION, /**< Joystick hat position change */
SDL_JOYBUTTONDOWN, /**< Joystick button pressed */
SDL_JOYBUTTONUP, /**< Joystick button released */
SDL_JOYDEVICEADDED, /**< A new joystick has been inserted into the system */
SDL_JOYDEVICEREMOVED, /**< An opened joystick has been removed */
/* Game controller events */
SDL_CONTROLLERAXISMOTION = 0x650, /**< Game controller axis motion */
SDL_CONTROLLERBUTTONDOWN, /**< Game controller button pressed */
SDL_CONTROLLERBUTTONUP, /**< Game controller button released */
SDL_CONTROLLERDEVICEADDED, /**< A new Game controller has been inserted into the system */
SDL_CONTROLLERDEVICEREMOVED, /**< An opened Game controller has been removed */
SDL_CONTROLLERDEVICEREMAPPED, /**< The controller mapping was updated */
/* Touch events */
SDL_FINGERDOWN = 0x700,
SDL_FINGERUP,
SDL_FINGERMOTION,
/* Gesture events */
SDL_DOLLARGESTURE = 0x800,
SDL_DOLLARRECORD,
SDL_MULTIGESTURE,
/* Clipboard events */
SDL_CLIPBOARDUPDATE = 0x900, /**< The clipboard changed */
/* Drag and drop events */
SDL_DROPFILE = 0x1000, /**< The system requests a file open */
/* Audio hotplug events */
SDL_AUDIODEVICEADDED = 0x1100, /**< A new audio device is available */
SDL_AUDIODEVICEREMOVED, /**< An audio device has been removed. */
/* Render events */
SDL_RENDER_TARGETS_RESET = 0x2000, /**< The render targets have been reset and their contents need to be updated */
SDL_RENDER_DEVICE_RESET, /**< The device has been reset and all textures need to be recreated */
/** Events ::SDL_USEREVENT through ::SDL_LASTEVENT are for your use,
* and should be allocated with SDL_RegisterEvents()
*/
SDL_USEREVENT = 0x8000,
/**
* This last event is only for bounding internal arrays
*/
SDL_LASTEVENT = 0xFFFF
} SDL_EventType;
SDL_JOYBUTTONUP
Definition: SDL_events.h:112
SDL_APP_DIDENTERFOREGROUND
Definition: SDL_events.h:83
SDL_JOYHATMOTION
Definition: SDL_events.h:110
SDL_APP_WILLENTERFOREGROUND
Definition: SDL_events.h:79
SDL_KEYDOWN
Definition: SDL_events.h:93
SDL_APP_LOWMEMORY
Definition: SDL_events.h:67
SDL_MOUSEBUTTONUP
Definition: SDL_events.h:104
SDL_CONTROLLERDEVICEREMOVED
Definition: SDL_events.h:121
SDL_JOYDEVICEADDED
Definition: SDL_events.h:113
SDL_SYSWMEVENT
Definition: SDL_events.h:90
SDL_MOUSEBUTTONDOWN
Definition: SDL_events.h:103
SDL_QUIT
Definition: SDL_events.h:60
SDL_USEREVENT
Definition: SDL_events.h:151
SDL_JOYBALLMOTION
Definition: SDL_events.h:109
SDL_JOYAXISMOTION
Definition: SDL_events.h:108
SDL_MOUSEWHEEL
Definition: SDL_events.h:105
SDL_CONTROLLERDEVICEADDED
Definition: SDL_events.h:120
SDL_CONTROLLERBUTTONUP
Definition: SDL_events.h:119
SDL_JOYDEVICEREMOVED
Definition: SDL_events.h:114
SDL_DOLLARGESTURE
Definition: SDL_events.h:130
SDL_RENDER_DEVICE_RESET
Definition: SDL_events.h:146
SDL_AUDIODEVICEREMOVED
Definition: SDL_events.h:142
SDL_FINGERDOWN
Definition: SDL_events.h:125
SDL_AUDIODEVICEADDED
Definition: SDL_events.h:141
SDL_JOYBUTTONDOWN
Definition: SDL_events.h:111
SDL_KEYUP
Definition: SDL_events.h:94
SDL_EventType
SDL_EventType
The types of events that can be delivered.
Definition: SDL_events.h:55
SDL_WINDOWEVENT
Definition: SDL_events.h:89
SDL_CONTROLLERBUTTONDOWN
Definition: SDL_events.h:118
SDL_FINGERMOTION
Definition: SDL_events.h:127
SDL_CONTROLLERDEVICEREMAPPED
Definition: SDL_events.h:122
SDL_DROPFILE
Definition: SDL_events.h:138
SDL_FIRSTEVENT
Definition: SDL_events.h:57
SDL_FINGERUP
Definition: SDL_events.h:126
SDL_MOUSEMOTION
Definition: SDL_events.h:102
SDL_TEXTINPUT
Definition: SDL_events.h:96
SDL_APP_WILLENTERBACKGROUND
Definition: SDL_events.h:71
SDL_APP_TERMINATING
Definition: SDL_events.h:63
SDL_KEYMAPCHANGED
Definition: SDL_events.h:97
SDL_RENDER_TARGETS_RESET
Definition: SDL_events.h:145
SDL_APP_DIDENTERBACKGROUND
Definition: SDL_events.h:75
SDL_CLIPBOARDUPDATE
Definition: SDL_events.h:135
SDL_CONTROLLERAXISMOTION
Definition: SDL_events.h:117
SDL_DOLLARRECORD
Definition: SDL_events.h:131
SDL_TEXTEDITING
Definition: SDL_events.h:95
SDL_LASTEVENT
Definition: SDL_events.h:156
SDL_MULTIGESTURE
Definition: SDL_events.h:132

## Function Documentation

void SDL_AddEventWatch | ( | SDL_EventFilter | filter,
|  | void * | userdata
| ) |  |

Add a function which is called when an event is added to the queue.

Definition at line 505 of file SDL_events.c.

References SDL_EventWatcher::callback, SDL_EventWatcher::next, NULL, SDL_malloc, tail, and SDL_EventWatcher::userdata.

{
SDL_EventWatcher *watcher, *tail;
watcher = (SDL_EventWatcher *)SDL_malloc(sizeof(*watcher));
if (!watcher) {
/* Uh oh... */
return;
}
/* create the watcher */
watcher->callback = filter;
watcher->userdata = userdata;
watcher->next = NULL;
/* add the watcher to the end of the list */
if (SDL_event_watchers) {
for (tail = SDL_event_watchers; tail->next; tail = tail->next) {
continue;
}
tail->next = watcher;
} else {
SDL_event_watchers = watcher;
}
}
SDL_event_watchers
static SDL_EventWatcher * SDL_event_watchers
Definition: SDL_events.c:49
SDL_EventWatcher::callback
SDL_EventFilter callback
Definition: SDL_events.c:44
SDL_EventWatcher::next
struct SDL_EventWatcher * next
Definition: SDL_events.c:46
NULL
#define NULL
Definition: begin_code.h:143
tail
SDL_EventEntry * tail
Definition: SDL_events.c:80
SDL_malloc
#define SDL_malloc
Definition: SDL_dynapi_overrides.h:380
SDL_EventWatcher::userdata
void * userdata
Definition: SDL_events.c:45
SDL_EventWatcher
Definition: SDL_events.c:43
filter
GLint GLint GLint GLint GLint GLint GLint GLbitfield GLenum filter
Definition: SDL_opengl_glext.h:1184

void SDL_DelEventWatch | ( | SDL_EventFilter | filter,
|  | void * | userdata
| ) |  |

Remove an event watch function added with SDL_AddEventWatch()

Definition at line 533 of file SDL_events.c.

References SDL_EventWatcher::next, NULL, and SDL_free().

{
SDL_EventWatcher *prev = NULL;
SDL_EventWatcher *curr;
for (curr = SDL_event_watchers; curr; prev = curr, curr = curr->next) {
if (curr->callback == filter && curr->userdata == userdata) {
if (prev) {
prev->next = curr->next;
} else {
SDL_event_watchers = curr->next;
}
SDL_free(curr);
break;
}
}
}
SDL_event_watchers
static SDL_EventWatcher * SDL_event_watchers
Definition: SDL_events.c:49
SDL_EventWatcher::next
struct SDL_EventWatcher * next
Definition: SDL_events.c:46
SDL_free
void SDL_free(void *mem)
NULL
#define NULL
Definition: begin_code.h:143
SDL_EventWatcher
Definition: SDL_events.c:43
filter
GLint GLint GLint GLint GLint GLint GLint GLbitfield GLenum filter
Definition: SDL_opengl_glext.h:1184

Uint8 SDL_EventState | ( | Uint32 | type,
|  | int | state
| ) |  |

This function allows you to set the state of processing certain events.

- If `state` is set to SDL_IGNORE, that event will be automatically dropped from the event queue and will not event be filtered.
- If `state` is set to SDL_ENABLE, that event will be processed normally.
- If `state` is set to SDL_QUERY, SDL_EventState() will return the current processing state of the specified event.

Definition at line 567 of file SDL_events.c.

References SDL_DisabledEventBlock::bits, SDL_calloc(), SDL_DISABLE, SDL_ENABLE, and SDL_FlushEvent().

Referenced by SDL_StartEventLoop().

{
Uint8 current_state;
Uint8 hi = ((type >> 8) & 0xff);
Uint8 lo = (type & 0xff);
if (SDL_disabled_events[hi] &&
(SDL_disabled_events[hi]->bits[lo/32] & (1 << (lo&31)))) {
current_state = SDL_DISABLE;
} else {
current_state = SDL_ENABLE;
}
if (state != current_state)
{
switch (state) {
case SDL_DISABLE:
/* Disable this event type and discard pending events */
if (!SDL_disabled_events[hi]) {
SDL_disabled_events[hi] = (SDL_DisabledEventBlock*) SDL_calloc(1, sizeof(SDL_DisabledEventBlock));
if (!SDL_disabled_events[hi]) {
/* Out of memory, nothing we can do... */
break;
}
}
SDL_disabled_events[hi]->bits[lo/32] |= (1 << (lo&31));
SDL_FlushEvent(type);
break;
case SDL_ENABLE:
SDL_disabled_events[hi]->bits[lo/32] &= ~(1 << (lo&31));
break;
default:
/* Querying state... */
break;
}
}
return current_state;
}
state
struct xkb_state * state
Definition: SDL_waylandsym.h:97
SDL_ENABLE
#define SDL_ENABLE
Definition: SDL_events.h:718
bits
GLenum GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const void * bits
Definition: SDL_opengl_glext.h:6176
SDL_DisabledEventBlock::bits
Uint32 bits[8]
Definition: SDL_events.c:52
type
GLuint GLuint GLsizei GLenum type
Definition: SDL_opengl.h:1564
SDL_calloc
void * SDL_calloc(size_t nmemb, size_t size)
Uint8
uint8_t Uint8
An unsigned 8-bit integer type.
Definition: SDL_stdinc.h:139
SDL_DisabledEventBlock
Definition: SDL_events.c:51
SDL_FlushEvent
void SDL_FlushEvent(Uint32 type)
Definition: SDL_events.c:357
SDL_DISABLE
#define SDL_DISABLE
Definition: SDL_events.h:717
SDL_disabled_events
static SDL_DisabledEventBlock * SDL_disabled_events[256]
Definition: SDL_events.c:55

void SDL_FilterEvents | ( | SDL_EventFilter | filter,
|  | void * | userdata
| ) |  |

Run the filter function on the current event queue, removing any events for which the filter returns 0.

Definition at line 552 of file SDL_events.c.

References SDL_EventEntry::event, SDL_EventWatcher::next, SDL_EventEntry::next, SDL_CutEvent(), SDL_EventQ, SDL_LockMutex, and SDL_UnlockMutex.

{
if (SDL_EventQ.lock && SDL_LockMutex(SDL_EventQ.lock) == 0) {
SDL_EventEntry *entry, *next;
for (entry = SDL_EventQ.head; entry; entry = next) {
next = entry->next;
if (!filter(userdata, &entry->event)) {
SDL_CutEvent(entry);
}
}
SDL_UnlockMutex(SDL_EventQ.lock);
}
}
SDL_AssertData::next
const struct SDL_AssertData * next
Definition: SDL_assert.h:117
SDL_LockMutex
#define SDL_LockMutex
Definition: SDL_dynapi_overrides.h:266
SDL_EventEntry::next
struct _SDL_EventEntry * next
Definition: SDL_events.c:64
SDL_EventEntry::event
SDL_Event event
Definition: SDL_events.c:61
SDL_EventQ
static struct @22 SDL_EventQ
SDL_EventEntry
Definition: SDL_events.c:59
SDL_CutEvent
static void SDL_CutEvent(SDL_EventEntry *entry)
Definition: SDL_events.c:239
SDL_UnlockMutex
#define SDL_UnlockMutex
Definition: SDL_dynapi_overrides.h:268
filter
GLint GLint GLint GLint GLint GLint GLint GLbitfield GLenum filter
Definition: SDL_opengl_glext.h:1184

void SDL_FlushEvent | ( | Uint32 | type | ) |

This function clears events from the event queue This function only affects currently queued events. If you want to make sure that all pending OS events are flushed, you can call SDL_PumpEvents() on the main thread immediately before the flush call.

Definition at line 357 of file SDL_events.c.

References SDL_FlushEvents().

Referenced by SDL_EventState().

{
SDL_FlushEvents(type, type);
}
type
GLuint GLuint GLsizei GLenum type
Definition: SDL_opengl.h:1564
SDL_FlushEvents
void SDL_FlushEvents(Uint32 minType, Uint32 maxType)
Definition: SDL_events.c:363

void SDL_FlushEvents | ( | Uint32 | minType,
|  | Uint32 | maxType
| ) |  |

Definition at line 363 of file SDL_events.c.

References SDL_EventEntry::event, SDL_EventWatcher::next, SDL_EventEntry::next, SDL_CutEvent(), SDL_EventQ, SDL_LockMutex, SDL_PumpEvents(), SDL_UnlockMutex, and SDL_Event::type.

Referenced by SDL_FlushEvent(), and SDL_SetEventFilter().

{
/* Don't look after we've quit */
if (!SDL_EventQ.active) {
return;
}
/* Make sure the events are current */
#if 0
/* Actually, we can't do this since we might be flushing while processing
a resize event, and calling this might trigger further resize events.
*/
SDL_PumpEvents();
#endif
/* Lock the event queue */
if (SDL_LockMutex(SDL_EventQ.lock) == 0) {
SDL_EventEntry *entry, *next;
Uint32 type;
for (entry = SDL_EventQ.head; entry; entry = next) {
next = entry->next;
type = entry->event.type;
if (minType <= type && type <= maxType) {
SDL_CutEvent(entry);
}
}
SDL_UnlockMutex(SDL_EventQ.lock);
}
}
SDL_AssertData::next
const struct SDL_AssertData * next
Definition: SDL_assert.h:117
SDL_LockMutex
#define SDL_LockMutex
Definition: SDL_dynapi_overrides.h:266
SDL_EventEntry::next
struct _SDL_EventEntry * next
Definition: SDL_events.c:64
SDL_PumpEvents
void SDL_PumpEvents(void)
Definition: SDL_events.c:395
Uint32
uint32_t Uint32
An unsigned 32-bit integer type.
Definition: SDL_stdinc.h:157
SDL_EventEntry::event
SDL_Event event
Definition: SDL_events.c:61
SDL_EventQ
static struct @22 SDL_EventQ
type
GLuint GLuint GLsizei GLenum type
Definition: SDL_opengl.h:1564
SDL_EventEntry
Definition: SDL_events.c:59
SDL_CutEvent
static void SDL_CutEvent(SDL_EventEntry *entry)
Definition: SDL_events.c:239
SDL_UnlockMutex
#define SDL_UnlockMutex
Definition: SDL_dynapi_overrides.h:268
SDL_Event::type
Uint32 type
Definition: SDL_events.h:523

SDL_bool SDL_GetEventFilter | ( | SDL_EventFilter * | filter,
|  | void ** | userdata
| ) |  |

Return the current event filter - can be used to "chain" filters. If there is no event filter set, this function returns SDL_FALSE.

Definition at line 492 of file SDL_events.c.

References SDL_EventOK, SDL_EventOKParam, SDL_FALSE, and SDL_TRUE.

{
if (filter) {
*filter = SDL_EventOK;
}
if (userdata) {
*userdata = SDL_EventOKParam;
}
return SDL_EventOK ? SDL_TRUE : SDL_FALSE;
}
SDL_EventOK
SDL_EventFilter SDL_EventOK
Definition: SDL_events.c:40
SDL_TRUE
Definition: SDL_stdinc.h:129
SDL_EventOKParam
void * SDL_EventOKParam
Definition: SDL_events.c:41
SDL_FALSE
Definition: SDL_stdinc.h:128
filter
GLint GLint GLint GLint GLint GLint GLint GLbitfield GLenum filter
Definition: SDL_opengl_glext.h:1184

SDL_bool SDL_HasEvent | ( | Uint32 | type | ) |

Checks to see if certain event types are in the event queue.

Definition at line 345 of file SDL_events.c.

References NULL, SDL_PEEKEVENT, and SDL_PeepEvents().

{
return (SDL_PeepEvents(NULL, 0, SDL_PEEKEVENT, type, type) > 0);
}
SDL_PeepEvents
int SDL_PeepEvents(SDL_Event *events, int numevents, SDL_eventaction action, Uint32 minType, Uint32 maxType)
Definition: SDL_events.c:265
SDL_PEEKEVENT
Definition: SDL_events.h:575
type
GLuint GLuint GLsizei GLenum type
Definition: SDL_opengl.h:1564
NULL
#define NULL
Definition: begin_code.h:143

SDL_bool SDL_HasEvents | ( | Uint32 | minType,
|  | Uint32 | maxType
| ) |  |

Definition at line 351 of file SDL_events.c.

References NULL, SDL_PEEKEVENT, and SDL_PeepEvents().

{
return (SDL_PeepEvents(NULL, 0, SDL_PEEKEVENT, minType, maxType) > 0);
}
SDL_PeepEvents
int SDL_PeepEvents(SDL_Event *events, int numevents, SDL_eventaction action, Uint32 minType, Uint32 maxType)
Definition: SDL_events.c:265
SDL_PEEKEVENT
Definition: SDL_events.h:575
NULL
#define NULL
Definition: begin_code.h:143

int SDL_PeepEvents | ( | SDL_Event * | events,
|  | int | numevents,
|  | SDL_eventaction | action,
|  | Uint32 | minType,
|  | Uint32 | maxType
| ) |  |

Checks the event queue for messages and optionally returns them.

If `action` is SDL_ADDEVENT, up to `numevents` events will be added to the back of the event queue.

If `action` is SDL_PEEKEVENT, up to `numevents` events at the front of the event queue, within the specified minimum and maximum type, will be returned and will not be removed from the queue.

If `action` is SDL_GETEVENT, up to `numevents` events at the front of the event queue, within the specified minimum and maximum type, will be returned and will be removed from the queue.

Returns
  The number of events actually stored, or -1 if there was an error.

This function is thread-safe.

Definition at line 265 of file SDL_events.c.

References SDL_EventEntry::event, i, SDL_SysWMEntry::msg, SDL_SysWMEvent::msg, SDL_EventWatcher::next, SDL_EventEntry::next, SDL_SysWMEntry::next, NULL, SDL_AddEvent(), SDL_ADDEVENT, SDL_CutEvent(), SDL_EventQ, SDL_GETEVENT, SDL_LockMutex, SDL_malloc, SDL_PEEKEVENT, SDL_SetError, SDL_SYSWMEVENT, SDL_UnlockMutex, SDL_Event::syswm, and SDL_Event::type.

Referenced by SDL_HasEvent(), SDL_HasEvents(), SDL_PushEvent(), and SDL_WaitEventTimeout().

{
int i, used;
/* Don't look after we've quit */
if (!SDL_EventQ.active) {
/* We get a few spurious events at shutdown, so don't warn then */
if (action != SDL_ADDEVENT) {
SDL_SetError("The event system has been shut down");
}
return (-1);
}
/* Lock the event queue */
used = 0;
if (!SDL_EventQ.lock || SDL_LockMutex(SDL_EventQ.lock) == 0) {
if (action == SDL_ADDEVENT) {
for (i = 0; i < numevents; ++i) {
used += SDL_AddEvent(&events[i]);
}
} else {
SDL_EventEntry *entry, *next;
SDL_SysWMEntry *wmmsg, *wmmsg_next;
SDL_Event tmpevent;
Uint32 type;
/* If 'events' is NULL, just see if they exist */
if (events == NULL) {
action = SDL_PEEKEVENT;
numevents = 1;
events = &tmpevent;
}
/* Clean out any used wmmsg data
FIXME: Do we want to retain the data for some period of time?
*/
for (wmmsg = SDL_EventQ.wmmsg_used; wmmsg; wmmsg = wmmsg_next) {
wmmsg_next = wmmsg->next;
wmmsg->next = SDL_EventQ.wmmsg_free;
SDL_EventQ.wmmsg_free = wmmsg;
}
SDL_EventQ.wmmsg_used = NULL;
for (entry = SDL_EventQ.head; entry && used < numevents; entry = next) {
next = entry->next;
type = entry->event.type;
if (minType <= type && type <= maxType) {
events[used] = entry->event;
if (entry->event.type == SDL_SYSWMEVENT) {
/* We need to copy the wmmsg somewhere safe.
For now we'll guarantee it's valid at least until
the next call to SDL_PeepEvents()
*/
if (SDL_EventQ.wmmsg_free) {
wmmsg = SDL_EventQ.wmmsg_free;
SDL_EventQ.wmmsg_free = wmmsg->next;
} else {
wmmsg = (SDL_SysWMEntry *)SDL_malloc(sizeof(*wmmsg));
}
wmmsg->msg = *entry->event.syswm.msg;
wmmsg->next = SDL_EventQ.wmmsg_used;
SDL_EventQ.wmmsg_used = wmmsg;
events[used].syswm.msg = &wmmsg->msg;
}
++used;
if (action == SDL_GETEVENT) {
SDL_CutEvent(entry);
}
}
}
}
SDL_UnlockMutex(SDL_EventQ.lock);
} else {
return SDL_SetError("Couldn't lock event queue");
}
return (used);
}
SDL_AssertData::next
const struct SDL_AssertData * next
Definition: SDL_assert.h:117
SDL_LockMutex
#define SDL_LockMutex
Definition: SDL_dynapi_overrides.h:266
SDL_EventEntry::next
struct _SDL_EventEntry * next
Definition: SDL_events.c:64
SDL_SysWMEntry::msg
SDL_SysWMmsg msg
Definition: SDL_events.c:69
Uint32
uint32_t Uint32
An unsigned 32-bit integer type.
Definition: SDL_stdinc.h:157
SDL_AddEvent
static int SDL_AddEvent(SDL_Event *event)
Definition: SDL_events.c:191
SDL_SysWMEvent::msg
SDL_SysWMmsg * msg
Definition: SDL_events.h:515
SDL_SYSWMEVENT
Definition: SDL_events.h:90
SDL_PEEKEVENT
Definition: SDL_events.h:575
SDL_EventEntry::event
SDL_Event event
Definition: SDL_events.c:61
SDL_SysWMEntry
Definition: SDL_events.c:67
SDL_EventQ
static struct @22 SDL_EventQ
SDL_SysWMEntry::next
struct _SDL_SysWMEntry * next
Definition: SDL_events.c:70
type
GLuint GLuint GLsizei GLenum type
Definition: SDL_opengl.h:1564
SDL_EventEntry
Definition: SDL_events.c:59
SDL_CutEvent
static void SDL_CutEvent(SDL_EventEntry *entry)
Definition: SDL_events.c:239
i
return Display return Display Bool Bool int int int return Display XEvent Bool(*) XPointer return Display return Display Drawable _Xconst char unsigned int unsigned int return Display Pixmap Pixmap XColor XColor unsigned int unsigned int return Display _Xconst char char int char return Display Visual unsigned int int int char unsigned int unsigned int in i)
Definition: SDL_x11sym.h:42
NULL
#define NULL
Definition: begin_code.h:143
SDL_SetError
#define SDL_SetError
Definition: SDL_dynapi_overrides.h:36
SDL_Event::syswm
SDL_SysWMEvent syswm
Definition: SDL_events.h:543
SDL_UnlockMutex
#define SDL_UnlockMutex
Definition: SDL_dynapi_overrides.h:268
SDL_Event
General event structure.
Definition: SDL_events.h:521
SDL_malloc
#define SDL_malloc
Definition: SDL_dynapi_overrides.h:380
SDL_GETEVENT
Definition: SDL_events.h:576
SDL_ADDEVENT
Definition: SDL_events.h:574
SDL_Event::type
Uint32 type
Definition: SDL_events.h:523

int SDL_PollEvent | ( | SDL_Event * | event | ) |

Polls for currently pending events.

Returns
  1 if there are any pending events, or 0 if there are none available.

Parameters

  event | If not NULL, the next event is removed from the queue and stored in that area.

Definition at line 416 of file SDL_events.c.

References SDL_WaitEventTimeout().

{
return SDL_WaitEventTimeout(event, 0);
}
SDL_WaitEventTimeout
int SDL_WaitEventTimeout(SDL_Event *event, int timeout)
Waits until the specified timeout (in milliseconds) for the next available event. ...
Definition: SDL_events.c:428

void SDL_PumpEvents | ( | void |  | ) |

Pumps the event loop, gathering events from the input devices.

This function updates the event queue and internal input device state.

This should only be run in the thread that sets the video mode.

Definition at line 395 of file SDL_events.c.

References _this, SDL_VideoDevice::PumpEvents, SDL_GetVideoDevice(), SDL_JOYAXISMOTION, SDL_JoystickEventState, SDL_JoystickUpdate, SDL_QUERY, and SDL_SendPendingQuit().

Referenced by SDL_FlushEvents(), and SDL_WaitEventTimeout().

{
SDL_VideoDevice *_this = SDL_GetVideoDevice();
/* Get events from the video subsystem */
if (_this) {
_this->PumpEvents(_this);
}
#if !SDL_JOYSTICK_DISABLED
/* Check for joystick state change */
if ((!SDL_disabled_events[SDL_JOYAXISMOTION >> 8] || SDL_JoystickEventState(SDL_QUERY))) {
SDL_JoystickUpdate();
}
#endif
SDL_SendPendingQuit(); /* in case we had a signal handler fire, etc. */
}
SDL_JOYAXISMOTION
Definition: SDL_events.h:108
_this
static SDL_VideoDevice * _this
Definition: SDL_video.c:114
SDL_JoystickUpdate
#define SDL_JoystickUpdate
Definition: SDL_dynapi_overrides.h:215
SDL_disabled_events
static SDL_DisabledEventBlock * SDL_disabled_events[256]
Definition: SDL_events.c:55
SDL_VideoDevice
Definition: SDL_sysvideo.h:142
SDL_JoystickEventState
#define SDL_JoystickEventState
Definition: SDL_dynapi_overrides.h:216
SDL_GetVideoDevice
SDL_VideoDevice * SDL_GetVideoDevice(void)
Definition: SDL_video.c:573
SDL_SendPendingQuit
void SDL_SendPendingQuit(void)
Definition: SDL_quit.c:146
SDL_QUERY
#define SDL_QUERY
Definition: SDL_events.h:715
SDL_VideoDevice::PumpEvents
void(* PumpEvents)(_THIS)
Definition: SDL_sysvideo.h:249

int SDL_PushEvent | ( | SDL_Event * | event | ) |

Add an event to the event queue.

Returns
  1 on success, 0 if the event was filtered, or -1 if the event queue was full or there was some other error.

Definition at line 458 of file SDL_events.c.

References SDL_EventWatcher::callback, SDL_EventWatcher::next, SDL_ADDEVENT, SDL_EventOK, SDL_EventOKParam, SDL_GestureProcessEvent(), SDL_GetTicks(), SDL_PeepEvents(), and SDL_EventWatcher::userdata.

Referenced by SDL_SendAppEvent(), and SDL_SendSysWMEvent().

{
SDL_EventWatcher *curr;
event->common.timestamp = SDL_GetTicks();
if (SDL_EventOK && !SDL_EventOK(SDL_EventOKParam, event)) {
return 0;
}
for (curr = SDL_event_watchers; curr; curr = curr->next) {
curr->callback(curr->userdata, event);
}
if (SDL_PeepEvents(event, 1, SDL_ADDEVENT, 0, 0) <= 0) {
return -1;
}
SDL_GestureProcessEvent(event);
return 1;
}
SDL_PeepEvents
int SDL_PeepEvents(SDL_Event *events, int numevents, SDL_eventaction action, Uint32 minType, Uint32 maxType)
Definition: SDL_events.c:265
SDL_event_watchers
static SDL_EventWatcher * SDL_event_watchers
Definition: SDL_events.c:49
SDL_EventWatcher::callback
SDL_EventFilter callback
Definition: SDL_events.c:44
SDL_GestureProcessEvent
void SDL_GestureProcessEvent(SDL_Event *event)
Definition: SDL_gesture.c:510
SDL_GetTicks
Uint32 SDL_GetTicks(void)
Get the number of milliseconds since the SDL library initialization.
SDL_EventWatcher::next
struct SDL_EventWatcher * next
Definition: SDL_events.c:46
SDL_EventOK
SDL_EventFilter SDL_EventOK
Definition: SDL_events.c:40
SDL_EventOKParam
void * SDL_EventOKParam
Definition: SDL_events.c:41
SDL_ADDEVENT
Definition: SDL_events.h:574
SDL_EventWatcher::userdata
void * userdata
Definition: SDL_events.c:45
SDL_EventWatcher
Definition: SDL_events.c:43

Uint32 SDL_RegisterEvents | ( | int | numevents | ) |

This function allocates a set of user-defined events, and returns the beginning event number for that set of events.

If there aren't enough user-defined events left, this function returns (Uint32)-1

Definition at line 608 of file SDL_events.c.

References SDL_LASTEVENT, and SDL_userevents.

{
Uint32 event_base;
if ((numevents > 0) && (SDL_userevents+numevents <= SDL_LASTEVENT)) {
event_base = SDL_userevents;
SDL_userevents += numevents;
} else {
event_base = (Uint32)-1;
}
return event_base;
}
Uint32
uint32_t Uint32
An unsigned 32-bit integer type.
Definition: SDL_stdinc.h:157
SDL_userevents
static Uint32 SDL_userevents
Definition: SDL_events.c:56
SDL_LASTEVENT
Definition: SDL_events.h:156

void SDL_SetEventFilter | ( | SDL_EventFilter | filter,
|  | void * | userdata
| ) |  |

Sets up a filter to process all events before they change internal state and are posted to the internal event queue.

The filter is prototyped as:

int SDL_EventFilter(void *userdata, SDL_Event * event);

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.

Warning
  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.

Definition at line 482 of file SDL_events.c.

References NULL, SDL_EventOK, SDL_EventOKParam, SDL_FIRSTEVENT, SDL_FlushEvents(), SDL_LASTEVENT, and SDL_EventWatcher::userdata.

{
/* Set filter and discard pending events */
SDL_EventOK = NULL;
SDL_FlushEvents(SDL_FIRSTEVENT, SDL_LASTEVENT);
SDL_EventOKParam = userdata;
SDL_EventOK = filter;
}
SDL_FlushEvents
void SDL_FlushEvents(Uint32 minType, Uint32 maxType)
Definition: SDL_events.c:363
SDL_EventOK
SDL_EventFilter SDL_EventOK
Definition: SDL_events.c:40
SDL_EventOKParam
void * SDL_EventOKParam
Definition: SDL_events.c:41
SDL_FIRSTEVENT
Definition: SDL_events.h:57
NULL
#define NULL
Definition: begin_code.h:143
SDL_LASTEVENT
Definition: SDL_events.h:156
filter
GLint GLint GLint GLint GLint GLint GLint GLbitfield GLenum filter
Definition: SDL_opengl_glext.h:1184

int SDL_WaitEvent | ( | SDL_Event * | event | ) |

Waits indefinitely for the next available event.

Returns
  1, or 0 if there was an error while waiting for events.

Parameters

  event | If not NULL, the next event is removed from the queue and stored in that area.

Definition at line 422 of file SDL_events.c.

References SDL_WaitEventTimeout().

{
return SDL_WaitEventTimeout(event, -1);
}
SDL_WaitEventTimeout
int SDL_WaitEventTimeout(SDL_Event *event, int timeout)
Waits until the specified timeout (in milliseconds) for the next available event. ...
Definition: SDL_events.c:428

int SDL_WaitEventTimeout | ( | SDL_Event * | event,
|  | int | timeout
| ) |  |

Waits until the specified timeout (in milliseconds) for the next available event.

Returns
  1, or 0 if there was an error while waiting for events.

Parameters

  event | If not NULL, the next event is removed from the queue and stored in that area.
  timeout | The timeout (in milliseconds) to wait for next event.

Definition at line 428 of file SDL_events.c.

References SDL_Delay, SDL_FIRSTEVENT, SDL_GETEVENT, SDL_GetTicks(), SDL_LASTEVENT, SDL_PeepEvents(), SDL_PumpEvents(), and SDL_TICKS_PASSED.

Referenced by SDL_PollEvent(), and SDL_WaitEvent().

{
Uint32 expiration = 0;
if (timeout > 0)
expiration = SDL_GetTicks() + timeout;
for (;;) {
SDL_PumpEvents();
switch (SDL_PeepEvents(event, 1, SDL_GETEVENT, SDL_FIRSTEVENT, SDL_LASTEVENT)) {
case -1:
return 0;
case 1:
return 1;
case 0:
if (timeout == 0) {
/* Polling and no events, just return */
return 0;
}
if (timeout > 0 && SDL_TICKS_PASSED(SDL_GetTicks(), expiration)) {
/* Timeout expired and no events */
return 0;
}
SDL_Delay(10);
break;
}
}
}
SDL_PeepEvents
int SDL_PeepEvents(SDL_Event *events, int numevents, SDL_eventaction action, Uint32 minType, Uint32 maxType)
Definition: SDL_events.c:265
SDL_PumpEvents
void SDL_PumpEvents(void)
Definition: SDL_events.c:395
Uint32
uint32_t Uint32
An unsigned 32-bit integer type.
Definition: SDL_stdinc.h:157
SDL_GetTicks
Uint32 SDL_GetTicks(void)
Get the number of milliseconds since the SDL library initialization.
SDL_Delay
#define SDL_Delay
Definition: SDL_dynapi_overrides.h:490
SDL_FIRSTEVENT
Definition: SDL_events.h:57
timeout
GLbitfield GLuint64 timeout
Definition: SDL_opengl_glext.h:1483
SDL_GETEVENT
Definition: SDL_events.h:576
SDL_TICKS_PASSED
#define SDL_TICKS_PASSED(A, B)
Compare SDL ticks values, and return true if A has passed B.
Definition: SDL_timer.h:56
SDL_LASTEVENT
Definition: SDL_events.h:156