SDL  2.0
SDL_events_c.h File Reference
#include "../SDL_internal.h"
#include "SDL_events.h"
#include "SDL_thread.h"
#include "SDL_clipboardevents_c.h"
#include "SDL_dropevents_c.h"
#include "SDL_gesture_c.h"
#include "SDL_keyboard_c.h"
#include "SDL_mouse_c.h"
#include "SDL_touch_c.h"
#include "SDL_windowevents_c.h"
+ Include dependency graph for SDL_events_c.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Functions

int SDL_StartEventLoop (void)
 
void SDL_StopEventLoop (void)
 
void SDL_QuitInterrupt (void)
 
int SDL_SendAppEvent (SDL_EventType eventType)
 
int SDL_SendSysWMEvent (SDL_SysWMmsg *message)
 
int SDL_SendKeymapChangedEvent (void)
 
int SDL_QuitInit (void)
 
int SDL_SendQuit (void)
 
void SDL_QuitQuit (void)
 
void SDL_SendPendingQuit (void)
 

Variables

SDL_EventFilter SDL_EventOK
 
voidSDL_EventOKParam
 

Function Documentation

int SDL_QuitInit ( void  )

Definition at line 92 of file SDL_quit.c.

References disable_signals, SDL_atoi, SDL_GetHint, SDL_HINT_NO_SIGNAL_HANDLERS, and SDL_QuitInit_Internal().

Referenced by SDL_InitSubSystem().

93 {
94  const char *hint = SDL_GetHint(SDL_HINT_NO_SIGNAL_HANDLERS);
95  disable_signals = hint && (SDL_atoi(hint) == 1);
96  if (!disable_signals) {
97  return SDL_QuitInit_Internal();
98  }
99  return 0;
100 }
#define SDL_GetHint
static SDL_bool disable_signals
Definition: SDL_quit.c:34
#define SDL_atoi
#define SDL_HINT_NO_SIGNAL_HANDLERS
Tell SDL not to catch the SIGINT or SIGTERM signals.
Definition: SDL_hints.h:622
static int SDL_QuitInit_Internal(void)
Definition: SDL_quit.c:52
void SDL_QuitInterrupt ( void  )
void SDL_QuitQuit ( void  )

Definition at line 130 of file SDL_quit.c.

References disable_signals, and SDL_QuitQuit_Internal().

Referenced by SDL_QuitSubSystem().

131 {
132  if (!disable_signals) {
134  }
135 }
static SDL_bool disable_signals
Definition: SDL_quit.c:34
static void SDL_QuitQuit_Internal(void)
Definition: SDL_quit.c:103
int SDL_SendAppEvent ( SDL_EventType  eventType)

Definition at line 622 of file SDL_events.c.

References SDL_ENABLE, SDL_GetEventState, and SDL_PushEvent().

Referenced by IsSDLWindowEventPending(), SDL_SendKeymapChangedEvent(), and SDL_SendQuit().

623 {
624  int posted;
625 
626  posted = 0;
627  if (SDL_GetEventState(eventType) == SDL_ENABLE) {
629  event.type = eventType;
630  posted = (SDL_PushEvent(&event) > 0);
631  }
632  return (posted);
633 }
#define SDL_ENABLE
Definition: SDL_events.h:718
#define SDL_GetEventState(type)
Definition: SDL_events.h:731
struct _cl_event * event
int SDL_PushEvent(SDL_Event *event)
Add an event to the event queue.
Definition: SDL_events.c:458
General event structure.
Definition: SDL_events.h:521
int SDL_SendKeymapChangedEvent ( void  )

Definition at line 653 of file SDL_events.c.

References SDL_KEYMAPCHANGED, and SDL_SendAppEvent().

654 {
656 }
int SDL_SendAppEvent(SDL_EventType eventType)
Definition: SDL_events.c:622
void SDL_SendPendingQuit ( void  )

Definition at line 146 of file SDL_quit.c.

References SDL_assert, SDL_SendQuit(), and send_quit_pending.

Referenced by SDL_PumpEvents().

147 {
148  if (send_quit_pending) {
149  SDL_SendQuit();
151  }
152 }
static SDL_bool send_quit_pending
Definition: SDL_quit.c:35
int SDL_SendQuit(void)
Definition: SDL_quit.c:139
#define SDL_assert(condition)
Definition: SDL_assert.h:167
int SDL_SendQuit ( void  )

Definition at line 139 of file SDL_quit.c.

References SDL_FALSE, SDL_QUIT, SDL_SendAppEvent(), and send_quit_pending.

Referenced by SDL_SendPendingQuit(), and SDL_SendWindowEvent().

140 {
142  return SDL_SendAppEvent(SDL_QUIT);
143 }
static SDL_bool send_quit_pending
Definition: SDL_quit.c:35
int SDL_SendAppEvent(SDL_EventType eventType)
Definition: SDL_events.c:622
int SDL_SendSysWMEvent ( SDL_SysWMmsg message)

Definition at line 636 of file SDL_events.c.

References SDL_ENABLE, SDL_GetEventState, SDL_memset, SDL_PushEvent(), and SDL_SYSWMEVENT.

637 {
638  int posted;
639 
640  posted = 0;
643  SDL_memset(&event, 0, sizeof(event));
644  event.type = SDL_SYSWMEVENT;
645  event.syswm.msg = message;
646  posted = (SDL_PushEvent(&event) > 0);
647  }
648  /* Update internal event state */
649  return (posted);
650 }
GLuint GLsizei const GLchar * message
#define SDL_ENABLE
Definition: SDL_events.h:718
#define SDL_GetEventState(type)
Definition: SDL_events.h:731
struct _cl_event * event
int SDL_PushEvent(SDL_Event *event)
Add an event to the event queue.
Definition: SDL_events.c:458
General event structure.
Definition: SDL_events.h:521
#define SDL_memset
int SDL_StartEventLoop ( void  )

Definition at line 160 of file SDL_events.c.

References NULL, SDL_CreateMutex, SDL_DISABLE, SDL_EventQ, SDL_EventState(), SDL_SYSWMEVENT, SDL_TEXTEDITING, SDL_TEXTINPUT, and SDL_TRUE.

Referenced by SDL_InitSubSystem().

161 {
162  /* We'll leave the event queue alone, since we might have gotten
163  some important events at launch (like SDL_DROPFILE)
164 
165  FIXME: Does this introduce any other bugs with events at startup?
166  */
167 
168  /* Create the lock and set ourselves active */
169 #if !SDL_THREADS_DISABLED
170  if (!SDL_EventQ.lock) {
171  SDL_EventQ.lock = SDL_CreateMutex();
172  }
173  if (SDL_EventQ.lock == NULL) {
174  return (-1);
175  }
176 #endif /* !SDL_THREADS_DISABLED */
177 
178  /* Process most event types */
182 
183  SDL_EventQ.active = SDL_TRUE;
184 
185  return (0);
186 }
#define SDL_CreateMutex
static struct @20 SDL_EventQ
Uint8 SDL_EventState(Uint32 type, int state)
Definition: SDL_events.c:567
#define SDL_DISABLE
Definition: SDL_events.h:717
#define NULL
Definition: begin_code.h:143
void SDL_StopEventLoop ( void  )

Definition at line 90 of file SDL_events.c.

References i, SDL_EventWatcher::next, SDL_EventEntry::next, SDL_SysWMEntry::next, NULL, SDL_arraysize, SDL_atoi, SDL_DestroyMutex, SDL_event_watchers, SDL_EventOK, SDL_EventQ, SDL_FALSE, SDL_free(), SDL_GetHint, SDL_LockMutex, SDL_Log, and SDL_UnlockMutex.

Referenced by SDL_QuitSubSystem().

91 {
92  const char *report = SDL_GetHint("SDL_EVENT_QUEUE_STATISTICS");
93  int i;
94  SDL_EventEntry *entry;
95  SDL_SysWMEntry *wmmsg;
96 
97  if (SDL_EventQ.lock) {
99  }
100 
101  SDL_EventQ.active = SDL_FALSE;
102 
103  if (report && SDL_atoi(report)) {
104  SDL_Log("SDL EVENT QUEUE: Maximum events in-flight: %d\n",
105  SDL_EventQ.max_events_seen);
106  }
107 
108  /* Clean out EventQ */
109  for (entry = SDL_EventQ.head; entry; ) {
110  SDL_EventEntry *next = entry->next;
111  SDL_free(entry);
112  entry = next;
113  }
114  for (entry = SDL_EventQ.free; entry; ) {
115  SDL_EventEntry *next = entry->next;
116  SDL_free(entry);
117  entry = next;
118  }
119  for (wmmsg = SDL_EventQ.wmmsg_used; wmmsg; ) {
120  SDL_SysWMEntry *next = wmmsg->next;
121  SDL_free(wmmsg);
122  wmmsg = next;
123  }
124  for (wmmsg = SDL_EventQ.wmmsg_free; wmmsg; ) {
125  SDL_SysWMEntry *next = wmmsg->next;
126  SDL_free(wmmsg);
127  wmmsg = next;
128  }
129 
130  SDL_EventQ.count = 0;
131  SDL_EventQ.max_events_seen = 0;
132  SDL_EventQ.head = NULL;
133  SDL_EventQ.tail = NULL;
134  SDL_EventQ.free = NULL;
135  SDL_EventQ.wmmsg_used = NULL;
136  SDL_EventQ.wmmsg_free = NULL;
137 
138  /* Clear disabled event state */
139  for (i = 0; i < SDL_arraysize(SDL_disabled_events); ++i) {
142  }
143 
144  while (SDL_event_watchers) {
146  SDL_event_watchers = tmp->next;
147  SDL_free(tmp);
148  }
149  SDL_EventOK = NULL;
150 
151  if (SDL_EventQ.lock) {
154  SDL_EventQ.lock = NULL;
155  }
156 }
#define SDL_LockMutex
static SDL_EventWatcher * SDL_event_watchers
Definition: SDL_events.c:49
struct _SDL_EventEntry * next
Definition: SDL_events.c:64
#define SDL_GetHint
Definition: SDL_events.c:67
struct _SDL_SysWMEntry * next
Definition: SDL_events.c:70
#define SDL_Log
struct SDL_EventWatcher * next
Definition: SDL_events.c:46
void SDL_free(void *mem)
SDL_EventFilter SDL_EventOK
Definition: SDL_events.c:40
static struct @20 SDL_EventQ
Definition: SDL_events.c:59
#define SDL_atoi
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
#define NULL
Definition: begin_code.h:143
#define SDL_DestroyMutex
static SDL_DisabledEventBlock * SDL_disabled_events[256]
Definition: SDL_events.c:55
#define SDL_UnlockMutex
#define SDL_arraysize(array)
Definition: SDL_stdinc.h:93

Variable Documentation