SDL  2.0
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_DisplayEvent
 Display state change event data (event.display.*) 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_SensorEvent
 Sensor event structure (event.sensor.*) 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_QUERY   -1
 
#define SDL_IGNORE   0
 
#define SDL_DISABLE   0
 
#define SDL_ENABLE   1
 
#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_DISPLAYEVENT = 0x150,
  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_DROPTEXT,
  SDL_DROPBEGIN,
  SDL_DROPCOMPLETE,
  SDL_AUDIODEVICEADDED = 0x1100,
  SDL_AUDIODEVICEREMOVED,
  SDL_SENSORUPDATE = 0x1200,
  SDL_RENDER_TARGETS_RESET = 0x2000,
  SDL_RENDER_DEVICE_RESET,
  SDL_USEREVENT = 0x8000,
  SDL_LASTEVENT = 0xFFFF
}
 The types of events that can be delivered. More...
 
enum  SDL_eventaction {
  SDL_ADDEVENT,
  SDL_PEEKEVENT,
  SDL_GETEVENT
}
 

Functions

 SDL_COMPILE_TIME_ASSERT (SDL_Event, sizeof(SDL_Event)==56)
 
void SDL_PumpEvents (void)
 
int SDL_PeepEvents (SDL_Event *events, int numevents, SDL_eventaction action, Uint32 minType, Uint32 maxType)
 
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)
 
Uint8 SDL_EventState (Uint32 type, int state)
 
Uint32 SDL_RegisterEvents (int numevents)
 

Detailed Description

Include file for SDL event handling.

Definition in file SDL_events.h.

Macro Definition Documentation

◆ SDL_DISABLE

#define SDL_DISABLE   0

Definition at line 758 of file SDL_events.h.

◆ SDL_ENABLE

#define SDL_ENABLE   1

Definition at line 759 of file SDL_events.h.

◆ SDL_GetEventState

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

Definition at line 772 of file SDL_events.h.

◆ SDL_IGNORE

#define SDL_IGNORE   0

Definition at line 757 of file SDL_events.h.

◆ SDL_PRESSED

#define SDL_PRESSED   1

Definition at line 50 of file SDL_events.h.

◆ SDL_QUERY

#define SDL_QUERY   -1

Definition at line 756 of file SDL_events.h.

◆ SDL_RELEASED

#define SDL_RELEASED   0

Definition at line 49 of file SDL_events.h.

◆ SDL_TEXTEDITINGEVENT_TEXT_SIZE

#define SDL_TEXTEDITINGEVENT_TEXT_SIZE   (32)

Definition at line 223 of file SDL_events.h.

◆ SDL_TEXTINPUTEVENT_TEXT_SIZE

#define SDL_TEXTINPUTEVENT_TEXT_SIZE   (32)

Definition at line 238 of file SDL_events.h.

Typedef Documentation

◆ SDL_EventFilter

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

Definition at line 699 of file SDL_events.h.

Enumeration Type Documentation

◆ SDL_eventaction

Enumerator
SDL_ADDEVENT 
SDL_PEEKEVENT 
SDL_GETEVENT 

Definition at line 613 of file SDL_events.h.

614 {
615  SDL_ADDEVENT,

◆ 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_DISPLAYEVENT 

Display state change

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_DROPTEXT 

text/plain drag-and-drop event

SDL_DROPBEGIN 

A new set of drops is beginning (NULL filename)

SDL_DROPCOMPLETE 

Current set of drops is now complete (NULL filename)

SDL_AUDIODEVICEADDED 

A new audio device is available

SDL_AUDIODEVICEREMOVED 

An audio device has been removed.

SDL_SENSORUPDATE 

A sensor was updated

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.

56 {
57  SDL_FIRSTEVENT = 0, /**< Unused (do not remove) */
58 
59  /* Application events */
60  SDL_QUIT = 0x100, /**< User-requested quit */
61 
62  /* These application events have special meaning on iOS, see README-ios.md for details */
63  SDL_APP_TERMINATING, /**< The application is being terminated by the OS
64  Called on iOS in applicationWillTerminate()
65  Called on Android in onDestroy()
66  */
67  SDL_APP_LOWMEMORY, /**< The application is low on memory, free memory if possible.
68  Called on iOS in applicationDidReceiveMemoryWarning()
69  Called on Android in onLowMemory()
70  */
71  SDL_APP_WILLENTERBACKGROUND, /**< The application is about to enter the background
72  Called on iOS in applicationWillResignActive()
73  Called on Android in onPause()
74  */
75  SDL_APP_DIDENTERBACKGROUND, /**< The application did enter the background and may not get CPU for some time
76  Called on iOS in applicationDidEnterBackground()
77  Called on Android in onPause()
78  */
79  SDL_APP_WILLENTERFOREGROUND, /**< The application is about to enter the foreground
80  Called on iOS in applicationWillEnterForeground()
81  Called on Android in onResume()
82  */
83  SDL_APP_DIDENTERFOREGROUND, /**< The application is now interactive
84  Called on iOS in applicationDidBecomeActive()
85  Called on Android in onResume()
86  */
87 
88  /* Display events */
89  SDL_DISPLAYEVENT = 0x150, /**< Display state change */
90 
91  /* Window events */
92  SDL_WINDOWEVENT = 0x200, /**< Window state change */
93  SDL_SYSWMEVENT, /**< System specific event */
94 
95  /* Keyboard events */
96  SDL_KEYDOWN = 0x300, /**< Key pressed */
97  SDL_KEYUP, /**< Key released */
98  SDL_TEXTEDITING, /**< Keyboard text editing (composition) */
99  SDL_TEXTINPUT, /**< Keyboard text input */
100  SDL_KEYMAPCHANGED, /**< Keymap changed due to a system event such as an
101  input language or keyboard layout change.
102  */
103 
104  /* Mouse events */
105  SDL_MOUSEMOTION = 0x400, /**< Mouse moved */
106  SDL_MOUSEBUTTONDOWN, /**< Mouse button pressed */
107  SDL_MOUSEBUTTONUP, /**< Mouse button released */
108  SDL_MOUSEWHEEL, /**< Mouse wheel motion */
109 
110  /* Joystick events */
111  SDL_JOYAXISMOTION = 0x600, /**< Joystick axis motion */
112  SDL_JOYBALLMOTION, /**< Joystick trackball motion */
113  SDL_JOYHATMOTION, /**< Joystick hat position change */
114  SDL_JOYBUTTONDOWN, /**< Joystick button pressed */
115  SDL_JOYBUTTONUP, /**< Joystick button released */
116  SDL_JOYDEVICEADDED, /**< A new joystick has been inserted into the system */
117  SDL_JOYDEVICEREMOVED, /**< An opened joystick has been removed */
118 
119  /* Game controller events */
120  SDL_CONTROLLERAXISMOTION = 0x650, /**< Game controller axis motion */
121  SDL_CONTROLLERBUTTONDOWN, /**< Game controller button pressed */
122  SDL_CONTROLLERBUTTONUP, /**< Game controller button released */
123  SDL_CONTROLLERDEVICEADDED, /**< A new Game controller has been inserted into the system */
124  SDL_CONTROLLERDEVICEREMOVED, /**< An opened Game controller has been removed */
125  SDL_CONTROLLERDEVICEREMAPPED, /**< The controller mapping was updated */
126 
127  /* Touch events */
128  SDL_FINGERDOWN = 0x700,
129  SDL_FINGERUP,
131 
132  /* Gesture events */
133  SDL_DOLLARGESTURE = 0x800,
136 
137  /* Clipboard events */
138  SDL_CLIPBOARDUPDATE = 0x900, /**< The clipboard changed */
139 
140  /* Drag and drop events */
141  SDL_DROPFILE = 0x1000, /**< The system requests a file open */
142  SDL_DROPTEXT, /**< text/plain drag-and-drop event */
143  SDL_DROPBEGIN, /**< A new set of drops is beginning (NULL filename) */
144  SDL_DROPCOMPLETE, /**< Current set of drops is now complete (NULL filename) */
145 
146  /* Audio hotplug events */
147  SDL_AUDIODEVICEADDED = 0x1100, /**< A new audio device is available */
148  SDL_AUDIODEVICEREMOVED, /**< An audio device has been removed. */
149 
150  /* Sensor events */
151  SDL_SENSORUPDATE = 0x1200, /**< A sensor was updated */
152 
153  /* Render events */
154  SDL_RENDER_TARGETS_RESET = 0x2000, /**< The render targets have been reset and their contents need to be updated */
155  SDL_RENDER_DEVICE_RESET, /**< The device has been reset and all textures need to be recreated */
156 
157  /** Events ::SDL_USEREVENT through ::SDL_LASTEVENT are for your use,
158  * and should be allocated with SDL_RegisterEvents()
159  */
160  SDL_USEREVENT = 0x8000,
161 
162  /**
163  * This last event is only for bounding internal arrays
164  */
165  SDL_LASTEVENT = 0xFFFF
166 } SDL_EventType;

Function Documentation

◆ SDL_AddEventWatch()

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 834 of file SDL_events.c.

835 {
837  SDL_EventWatcher *event_watchers;
838 
839  event_watchers = SDL_realloc(SDL_event_watchers, (SDL_event_watchers_count + 1) * sizeof(*event_watchers));
840  if (event_watchers) {
841  SDL_EventWatcher *watcher;
842 
843  SDL_event_watchers = event_watchers;
845  watcher->callback = filter;
846  watcher->userdata = userdata;
847  watcher->removed = SDL_FALSE;
849  }
850 
853  }
854  }
855 }

References SDL_EventWatcher::callback, SDL_EventWatcher::removed, SDL_event_watchers, SDL_event_watchers_count, SDL_event_watchers_lock, SDL_FALSE, SDL_LockMutex, SDL_realloc, SDL_UnlockMutex, and SDL_EventWatcher::userdata.

◆ SDL_COMPILE_TIME_ASSERT()

SDL_COMPILE_TIME_ASSERT ( SDL_Event  ,
sizeof(SDL_Event = =56 
)

◆ SDL_DelEventWatch()

void SDL_DelEventWatch ( SDL_EventFilter  filter,
void userdata 
)

Remove an event watch function added with SDL_AddEventWatch()

Definition at line 858 of file SDL_events.c.

859 {
861  int i;
862 
863  for (i = 0; i < SDL_event_watchers_count; ++i) {
864  if (SDL_event_watchers[i].callback == filter && SDL_event_watchers[i].userdata == userdata) {
868  } else {
870  if (i < SDL_event_watchers_count) {
872  }
873  }
874  break;
875  }
876  }
877 
880  }
881  }
882 }

References callback(), i, SDL_EventWatcher::removed, SDL_event_watchers, SDL_event_watchers_count, SDL_event_watchers_dispatching, SDL_event_watchers_lock, SDL_event_watchers_removed, SDL_LockMutex, SDL_memmove, SDL_TRUE, and SDL_UnlockMutex.

◆ SDL_EventState()

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 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 902 of file SDL_events.c.

903 {
904  const SDL_bool isdnd = ((state == SDL_DISABLE) || (state == SDL_ENABLE)) &&
905  ((type == SDL_DROPFILE) || (type == SDL_DROPTEXT));
906  Uint8 current_state;
907  Uint8 hi = ((type >> 8) & 0xff);
908  Uint8 lo = (type & 0xff);
909 
910  if (SDL_disabled_events[hi] &&
911  (SDL_disabled_events[hi]->bits[lo/32] & (1 << (lo&31)))) {
912  current_state = SDL_DISABLE;
913  } else {
914  current_state = SDL_ENABLE;
915  }
916 
917  if (state != current_state)
918  {
919  switch (state) {
920  case SDL_DISABLE:
921  /* Disable this event type and discard pending events */
922  if (!SDL_disabled_events[hi]) {
924  if (!SDL_disabled_events[hi]) {
925  /* Out of memory, nothing we can do... */
926  break;
927  }
928  }
929  SDL_disabled_events[hi]->bits[lo/32] |= (1 << (lo&31));
931  break;
932  case SDL_ENABLE:
933  SDL_disabled_events[hi]->bits[lo/32] &= ~(1 << (lo&31));
934  break;
935  default:
936  /* Querying state... */
937  break;
938  }
939  }
940 
941  /* turn off drag'n'drop support if we've disabled the events.
942  This might change some UI details at the OS level. */
943  if (isdnd) {
945  }
946 
947  return current_state;
948 }

References SDL_DisabledEventBlock::bits, SDL_calloc, SDL_DISABLE, SDL_disabled_events, SDL_DROPFILE, SDL_DROPTEXT, SDL_ENABLE, SDL_FlushEvent(), SDL_ToggleDragAndDropSupport(), and state.

Referenced by SDL_StartEventLoop().

◆ SDL_FilterEvents()

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 885 of file SDL_events.c.

886 {
887  if (!SDL_EventQ.lock || SDL_LockMutex(SDL_EventQ.lock) == 0) {
888  SDL_EventEntry *entry, *next;
889  for (entry = SDL_EventQ.head; entry; entry = next) {
890  next = entry->next;
891  if (!filter(userdata, &entry->event)) {
892  SDL_CutEvent(entry);
893  }
894  }
895  if (SDL_EventQ.lock) {
897  }
898  }
899 }

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

◆ SDL_FlushEvent()

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 626 of file SDL_events.c.

627 {
629 }

References SDL_FlushEvents().

Referenced by SDL_EventState().

◆ SDL_FlushEvents()

void SDL_FlushEvents ( Uint32  minType,
Uint32  maxType 
)

Definition at line 632 of file SDL_events.c.

633 {
634  /* !!! FIXME: we need to manually SDL_free() the strings in TEXTINPUT and
635  drag'n'drop events if we're flushing them without passing them to the
636  app, but I don't know if this is the right place to do that. */
637 
638  /* Don't look after we've quit */
639  if (!SDL_AtomicGet(&SDL_EventQ.active)) {
640  return;
641  }
642 
643  /* Make sure the events are current */
644 #if 0
645  /* Actually, we can't do this since we might be flushing while processing
646  a resize event, and calling this might trigger further resize events.
647  */
648  SDL_PumpEvents();
649 #endif
650 
651  /* Lock the event queue */
652  if (!SDL_EventQ.lock || SDL_LockMutex(SDL_EventQ.lock) == 0) {
653  SDL_EventEntry *entry, *next;
654  Uint32 type;
655  for (entry = SDL_EventQ.head; entry; entry = next) {
656  next = entry->next;
657  type = entry->event.type;
658  if (minType <= type && type <= maxType) {
659  SDL_CutEvent(entry);
660  }
661  }
662  if (SDL_EventQ.lock) {
664  }
665  }
666 }

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

Referenced by SDL_FlushEvent(), and SDL_SetEventFilter().

◆ SDL_GetEventFilter()

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 810 of file SDL_events.c.

811 {
812  SDL_EventWatcher event_ok;
813 
815  event_ok = SDL_EventOK;
816 
819  }
820  } else {
821  SDL_zero(event_ok);
822  }
823 
824  if (filter) {
825  *filter = event_ok.callback;
826  }
827  if (userdata) {
828  *userdata = event_ok.userdata;
829  }
830  return event_ok.callback ? SDL_TRUE : SDL_FALSE;
831 }

References SDL_EventWatcher::callback, SDL_event_watchers_lock, SDL_EventOK, SDL_FALSE, SDL_LockMutex, SDL_TRUE, SDL_UnlockMutex, SDL_zero, and SDL_EventWatcher::userdata.

◆ SDL_HasEvent()

SDL_bool SDL_HasEvent ( Uint32  type)

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

Definition at line 614 of file SDL_events.c.

615 {
616  return (SDL_PeepEvents(NULL, 0, SDL_PEEKEVENT, type, type) > 0);
617 }

References NULL, SDL_PEEKEVENT, and SDL_PeepEvents().

◆ SDL_HasEvents()

SDL_bool SDL_HasEvents ( Uint32  minType,
Uint32  maxType 
)

Definition at line 620 of file SDL_events.c.

621 {
622  return (SDL_PeepEvents(NULL, 0, SDL_PEEKEVENT, minType, maxType) > 0);
623 }

References NULL, SDL_PEEKEVENT, and SDL_PeepEvents().

◆ SDL_PeepEvents()

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 536 of file SDL_events.c.

538 {
539  int i, used;
540 
541  /* Don't look after we've quit */
542  if (!SDL_AtomicGet(&SDL_EventQ.active)) {
543  /* We get a few spurious events at shutdown, so don't warn then */
544  if (action != SDL_ADDEVENT) {
545  SDL_SetError("The event system has been shut down");
546  }
547  return (-1);
548  }
549  /* Lock the event queue */
550  used = 0;
551  if (!SDL_EventQ.lock || SDL_LockMutex(SDL_EventQ.lock) == 0) {
552  if (action == SDL_ADDEVENT) {
553  for (i = 0; i < numevents; ++i) {
554  used += SDL_AddEvent(&events[i]);
555  }
556  } else {
557  SDL_EventEntry *entry, *next;
558  SDL_SysWMEntry *wmmsg, *wmmsg_next;
559  Uint32 type;
560 
561  if (action == SDL_GETEVENT) {
562  /* Clean out any used wmmsg data
563  FIXME: Do we want to retain the data for some period of time?
564  */
565  for (wmmsg = SDL_EventQ.wmmsg_used; wmmsg; wmmsg = wmmsg_next) {
566  wmmsg_next = wmmsg->next;
567  wmmsg->next = SDL_EventQ.wmmsg_free;
568  SDL_EventQ.wmmsg_free = wmmsg;
569  }
570  SDL_EventQ.wmmsg_used = NULL;
571  }
572 
573  for (entry = SDL_EventQ.head; entry && (!events || used < numevents); entry = next) {
574  next = entry->next;
575  type = entry->event.type;
576  if (minType <= type && type <= maxType) {
577  if (events) {
578  events[used] = entry->event;
579  if (entry->event.type == SDL_SYSWMEVENT) {
580  /* We need to copy the wmmsg somewhere safe.
581  For now we'll guarantee it's valid at least until
582  the next call to SDL_PeepEvents()
583  */
584  if (SDL_EventQ.wmmsg_free) {
585  wmmsg = SDL_EventQ.wmmsg_free;
586  SDL_EventQ.wmmsg_free = wmmsg->next;
587  } else {
588  wmmsg = (SDL_SysWMEntry *)SDL_malloc(sizeof(*wmmsg));
589  }
590  wmmsg->msg = *entry->event.syswm.msg;
591  wmmsg->next = SDL_EventQ.wmmsg_used;
592  SDL_EventQ.wmmsg_used = wmmsg;
593  events[used].syswm.msg = &wmmsg->msg;
594  }
595 
596  if (action == SDL_GETEVENT) {
597  SDL_CutEvent(entry);
598  }
599  }
600  ++used;
601  }
602  }
603  }
604  if (SDL_EventQ.lock) {
606  }
607  } else {
608  return SDL_SetError("Couldn't lock event queue");
609  }
610  return (used);
611 }

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

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

◆ SDL_PollEvent()

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
eventIf not NULL, the next event is removed from the queue and stored in that area.

Definition at line 698 of file SDL_events.c.

699 {
700  return SDL_WaitEventTimeout(event, 0);
701 }

References SDL_WaitEventTimeout().

◆ SDL_PumpEvents()

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 670 of file SDL_events.c.

671 {
673 
674  /* Get events from the video subsystem */
675  if (_this) {
677  }
678 #if !SDL_JOYSTICK_DISABLED
679  /* Check for joystick state change */
682  }
683 #endif
684 
685 #if !SDL_SENSOR_DISABLED
686  /* Check for sensor state change */
689  }
690 #endif
691 
692  SDL_SendPendingSignalEvents(); /* in case we had a signal handler fire, etc. */
693 }

References _this, SDL_VideoDevice::PumpEvents, SDL_disabled_events, SDL_GetVideoDevice(), SDL_JOYAXISMOTION, SDL_JoystickEventState, SDL_JoystickUpdate, SDL_QUERY, SDL_SendPendingSignalEvents(), SDL_SENSORUPDATE, and SDL_SensorUpdate.

Referenced by SDL_FlushEvents(), and SDL_WaitEventTimeout().

◆ SDL_PushEvent()

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 741 of file SDL_events.c.

742 {
743  event->common.timestamp = SDL_GetTicks();
744 
750  }
751  return 0;
752  }
753 
754  if (SDL_event_watchers_count > 0) {
755  /* Make sure we only dispatch the current watcher list */
756  int i, event_watchers_count = SDL_event_watchers_count;
757 
759  for (i = 0; i < event_watchers_count; ++i) {
760  if (!SDL_event_watchers[i].removed) {
762  }
763  }
765 
767  for (i = SDL_event_watchers_count; i--; ) {
768  if (SDL_event_watchers[i].removed) {
770  if (i < SDL_event_watchers_count) {
772  }
773  }
774  }
776  }
777  }
778 
781  }
782  }
783  }
784 
785  if (SDL_PeepEvents(event, 1, SDL_ADDEVENT, 0, 0) <= 0) {
786  return -1;
787  }
788 
790 
791  return 1;
792 }

References SDL_EventWatcher::callback, i, SDL_ADDEVENT, SDL_event_watchers, SDL_event_watchers_count, SDL_event_watchers_dispatching, SDL_event_watchers_lock, SDL_event_watchers_removed, SDL_EventOK, SDL_FALSE, SDL_GestureProcessEvent(), SDL_GetTicks(), SDL_LockMutex, SDL_memmove, SDL_PeepEvents(), SDL_TRUE, SDL_UnlockMutex, and SDL_EventWatcher::userdata.

Referenced by SDL_SendAppEvent(), and SDL_SendSysWMEvent().

◆ SDL_RegisterEvents()

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 951 of file SDL_events.c.

952 {
953  Uint32 event_base;
954 
955  if ((numevents > 0) && (SDL_userevents+numevents <= SDL_LASTEVENT)) {
956  event_base = SDL_userevents;
957  SDL_userevents += numevents;
958  } else {
959  event_base = (Uint32)-1;
960  }
961  return event_base;
962 }

References SDL_LASTEVENT, and SDL_userevents.

◆ SDL_SetEventFilter()

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 795 of file SDL_events.c.

796 {
798  /* Set filter and discard pending events */
800  SDL_EventOK.userdata = userdata;
802 
805  }
806  }
807 }

References SDL_EventWatcher::callback, SDL_event_watchers_lock, SDL_EventOK, SDL_FIRSTEVENT, SDL_FlushEvents(), SDL_LASTEVENT, SDL_LockMutex, SDL_UnlockMutex, and SDL_EventWatcher::userdata.

◆ SDL_WaitEvent()

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
eventIf not NULL, the next event is removed from the queue and stored in that area.

Definition at line 704 of file SDL_events.c.

705 {
706  return SDL_WaitEventTimeout(event, -1);
707 }

References SDL_WaitEventTimeout().

◆ SDL_WaitEventTimeout()

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
eventIf not NULL, the next event is removed from the queue and stored in that area.
timeoutThe timeout (in milliseconds) to wait for next event.

Definition at line 710 of file SDL_events.c.

711 {
712  Uint32 expiration = 0;
713 
714  if (timeout > 0)
715  expiration = SDL_GetTicks() + timeout;
716 
717  for (;;) {
718  SDL_PumpEvents();
720  case -1:
721  return 0;
722  case 0:
723  if (timeout == 0) {
724  /* Polling and no events, just return */
725  return 0;
726  }
727  if (timeout > 0 && SDL_TICKS_PASSED(SDL_GetTicks(), expiration)) {
728  /* Timeout expired and no events */
729  return 0;
730  }
731  SDL_Delay(10);
732  break;
733  default:
734  /* Has events */
735  return 1;
736  }
737  }
738 }

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().

SDL_zero
#define SDL_zero(x)
Definition: SDL_stdinc.h:416
SDL_SysWMEntry
Definition: SDL_events.c:68
SDL_Event::type
Uint32 type
Definition: SDL_events.h:559
SDL_CONTROLLERDEVICEREMOVED
Definition: SDL_events.h:124
SDL_EventWatcher::callback
SDL_EventFilter callback
Definition: SDL_events.c:40
SDL_EventWatcher::removed
SDL_bool removed
Definition: SDL_events.c:42
SDL_APP_TERMINATING
Definition: SDL_events.h:63
SDL_APP_DIDENTERBACKGROUND
Definition: SDL_events.h:75
SDL_APP_DIDENTERFOREGROUND
Definition: SDL_events.h:83
SDL_DISPLAYEVENT
Definition: SDL_events.h:89
SDL_AddEvent
static int SDL_AddEvent(SDL_Event *event)
Definition: SDL_events.c:456
SDL_LockMutex
#define SDL_LockMutex
Definition: SDL_dynapi_overrides.h:260
SDL_EventWatcher::userdata
void * userdata
Definition: SDL_events.c:41
SDL_event_watchers_count
static int SDL_event_watchers_count
Definition: SDL_events.c:48
SDL_ADDEVENT
Definition: SDL_events.h:615
NULL
#define NULL
Definition: begin_code.h:167
timeout
GLbitfield GLuint64 timeout
Definition: SDL_opengl_glext.h:1483
SDL_CutEvent
static void SDL_CutEvent(SDL_EventEntry *entry)
Definition: SDL_events.c:510
SDL_KEYUP
Definition: SDL_events.h:97
SDL_CONTROLLERBUTTONDOWN
Definition: SDL_events.h:121
SDL_SensorUpdate
#define SDL_SensorUpdate
Definition: SDL_dynapi_overrides.h:696
SDL_DOLLARRECORD
Definition: SDL_events.h:134
SDL_ToggleDragAndDropSupport
void SDL_ToggleDragAndDropSupport(void)
Definition: SDL_video.c:1371
SDL_MOUSEBUTTONUP
Definition: SDL_events.h:107
SDL_realloc
#define SDL_realloc
Definition: SDL_dynapi_overrides.h:376
SDL_TEXTEDITING
Definition: SDL_events.h:98
callback
static Uint32 callback(Uint32 interval, void *param)
Definition: testtimer.c:34
SDL_GestureProcessEvent
void SDL_GestureProcessEvent(SDL_Event *event)
Definition: SDL_gesture.c:542
SDL_ENABLE
#define SDL_ENABLE
Definition: SDL_events.h:759
SDL_JOYDEVICEREMOVED
Definition: SDL_events.h:117
SDL_DisabledEventBlock::bits
Uint32 bits[8]
Definition: SDL_events.c:53
SDL_EventEntry
Definition: SDL_events.c:60
SDL_AUDIODEVICEADDED
Definition: SDL_events.h:147
SDL_KEYDOWN
Definition: SDL_events.h:96
SDL_APP_LOWMEMORY
Definition: SDL_events.h:67
SDL_EventWatcher
Definition: SDL_events.c:39
SDL_CONTROLLERDEVICEADDED
Definition: SDL_events.h:123
SDL_FIRSTEVENT
Definition: SDL_events.h:57
SDL_APP_WILLENTERFOREGROUND
Definition: SDL_events.h:79
SDL_CONTROLLERAXISMOTION
Definition: SDL_events.h:120
SDL_SysWMEvent::msg
SDL_SysWMmsg * msg
Definition: SDL_events.h:551
SDL_RENDER_TARGETS_RESET
Definition: SDL_events.h:154
filter
GLint GLint GLint GLint GLint GLint GLint GLbitfield GLenum filter
Definition: SDL_opengl_glext.h:1184
SDL_event_watchers_lock
static SDL_mutex * SDL_event_watchers_lock
Definition: SDL_events.c:45
SDL_FINGERUP
Definition: SDL_events.h:129
SDL_QUERY
#define SDL_QUERY
Definition: SDL_events.h:756
SDL_event_watchers_removed
static SDL_bool SDL_event_watchers_removed
Definition: SDL_events.c:50
Uint8
uint8_t Uint8
Definition: SDL_stdinc.h:179
event
struct _cl_event * event
Definition: SDL_opengl_glext.h:2649
SDL_SysWMEntry::next
struct _SDL_SysWMEntry * next
Definition: SDL_events.c:71
SDL_MOUSEMOTION
Definition: SDL_events.h:105
SDL_FINGERDOWN
Definition: SDL_events.h:128
_this
static SDL_VideoDevice * _this
Definition: SDL_video.c:118
SDL_CONTROLLERBUTTONUP
Definition: SDL_events.h:122
SDL_eventaction
SDL_eventaction
Definition: SDL_events.h:613
SDL_TEXTINPUT
Definition: SDL_events.h:99
SDL_DROPCOMPLETE
Definition: SDL_events.h:144
SDL_event_watchers_dispatching
static SDL_bool SDL_event_watchers_dispatching
Definition: SDL_events.c:49
SDL_SENSORUPDATE
Definition: SDL_events.h:151
SDL_DROPTEXT
Definition: SDL_events.h:142
SDL_QUIT
Definition: SDL_events.h:60
SDL_FALSE
Definition: SDL_stdinc.h:163
SDL_SendPendingSignalEvents
void SDL_SendPendingSignalEvents(void)
Definition: SDL_quit.c:175
SDL_MOUSEWHEEL
Definition: SDL_events.h:108
SDL_GetTicks
Uint32 SDL_GetTicks(void)
Get the number of milliseconds since the SDL library initialization.
SDL_FINGERMOTION
Definition: SDL_events.h:130
SDL_memmove
#define SDL_memmove
Definition: SDL_dynapi_overrides.h:388
SDL_JOYAXISMOTION
Definition: SDL_events.h:111
SDL_APP_WILLENTERBACKGROUND
Definition: SDL_events.h:71
SDL_Delay
#define SDL_Delay
Definition: SDL_dynapi_overrides.h:486
SDL_EventEntry::event
SDL_Event event
Definition: SDL_events.c:62
SDL_DISABLE
#define SDL_DISABLE
Definition: SDL_events.h:758
SDL_EventQ
static struct @23 SDL_EventQ
SDL_VideoDevice
Definition: SDL_sysvideo.h:148
SDL_JoystickUpdate
#define SDL_JoystickUpdate
Definition: SDL_dynapi_overrides.h:209
SDL_DROPBEGIN
Definition: SDL_events.h:143
SDL_KEYMAPCHANGED
Definition: SDL_events.h:100
SDL_AssertData::next
const struct SDL_AssertData * next
Definition: SDL_assert.h:119
SDL_calloc
#define SDL_calloc
Definition: SDL_dynapi_overrides.h:375
SDL_FlushEvent
void SDL_FlushEvent(Uint32 type)
Definition: SDL_events.c:626
SDL_userevents
static Uint32 SDL_userevents
Definition: SDL_events.c:57
SDL_bool
SDL_bool
Definition: SDL_stdinc.h:161
events
static SDL_Event events[EVENT_BUF_SIZE]
Definition: testgesture.c:39
SDL_EventFilter
int(* SDL_EventFilter)(void *userdata, SDL_Event *event)
Definition: SDL_events.h:699
SDL_SetError
#define SDL_SetError
Definition: SDL_dynapi_overrides.h:30
SDL_EventOK
static SDL_EventWatcher SDL_EventOK
Definition: SDL_events.c:46
SDL_disabled_events
static SDL_DisabledEventBlock * SDL_disabled_events[256]
Definition: SDL_events.c:56
SDL_JOYBUTTONUP
Definition: SDL_events.h:115
SDL_TRUE
Definition: SDL_stdinc.h:164
SDL_MULTIGESTURE
Definition: SDL_events.h:135
SDL_event_watchers
static SDL_EventWatcher * SDL_event_watchers
Definition: SDL_events.c:47
SDL_JoystickEventState
#define SDL_JoystickEventState
Definition: SDL_dynapi_overrides.h:210
SDL_RENDER_DEVICE_RESET
Definition: SDL_events.h:155
SDL_SysWMEntry::msg
SDL_SysWMmsg msg
Definition: SDL_events.c:70
SDL_GETEVENT
Definition: SDL_events.h:617
SDL_MOUSEBUTTONDOWN
Definition: SDL_events.h:106
SDL_JOYDEVICEADDED
Definition: SDL_events.h:116
SDL_SYSWMEVENT
Definition: SDL_events.h:93
Uint32
uint32_t Uint32
Definition: SDL_stdinc.h:203
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:710
SDL_EventType
SDL_EventType
The types of events that can be delivered.
Definition: SDL_events.h:55
SDL_PumpEvents
void SDL_PumpEvents(void)
Definition: SDL_events.c:670
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_EventEntry::next
struct _SDL_EventEntry * next
Definition: SDL_events.c:65
bits
GLenum GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const void * bits
Definition: SDL_opengl_glext.h:6176
SDL_Event::syswm
SDL_SysWMEvent syswm
Definition: SDL_events.h:581
SDL_Event
General event structure.
Definition: SDL_events.h:557
SDL_WINDOWEVENT
Definition: SDL_events.h:92
SDL_GetVideoDevice
SDL_VideoDevice * SDL_GetVideoDevice(void)
Definition: SDL_video.c:583
SDL_malloc
#define SDL_malloc
Definition: SDL_dynapi_overrides.h:374
SDL_JOYBUTTONDOWN
Definition: SDL_events.h:114
SDL_AtomicGet
#define SDL_AtomicGet
Definition: SDL_dynapi_overrides.h:68
SDL_DisabledEventBlock
Definition: SDL_events.c:52
SDL_AUDIODEVICEREMOVED
Definition: SDL_events.h:148
SDL_LASTEVENT
Definition: SDL_events.h:165
SDL_UnlockMutex
#define SDL_UnlockMutex
Definition: SDL_dynapi_overrides.h:262
SDL_CONTROLLERDEVICEREMAPPED
Definition: SDL_events.h:125
SDL_VideoDevice::PumpEvents
void(* PumpEvents)(_THIS)
Definition: SDL_sysvideo.h:281
SDL_PeepEvents
int SDL_PeepEvents(SDL_Event *events, int numevents, SDL_eventaction action, Uint32 minType, Uint32 maxType)
Definition: SDL_events.c:536
SDL_FlushEvents
void SDL_FlushEvents(Uint32 minType, Uint32 maxType)
Definition: SDL_events.c:632
type
GLuint GLuint GLsizei GLenum type
Definition: SDL_opengl.h:1570
state
struct xkb_state * state
Definition: SDL_waylandsym.h:113
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:50
SDL_JOYHATMOTION
Definition: SDL_events.h:113
SDL_DOLLARGESTURE
Definition: SDL_events.h:133
SDL_DROPFILE
Definition: SDL_events.h:141
SDL_CLIPBOARDUPDATE
Definition: SDL_events.h:138
SDL_JOYBALLMOTION
Definition: SDL_events.h:112
SDL_PEEKEVENT
Definition: SDL_events.h:616
SDL_USEREVENT
Definition: SDL_events.h:160