SDL 2.0
SDL_events_c.h File Reference
#include "../SDL_internal.h"
#include "SDL_events.h"
#include "SDL_thread.h"
#include "../video/SDL_sysvideo.h"
#include "SDL_clipboardevents_c.h"
#include "SDL_displayevents_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_SendQuit (void)
 
int SDL_EventsInit (void)
 
void SDL_EventsQuit (void)
 
void SDL_SendPendingSignalEvents (void)
 
int SDL_QuitInit (void)
 
void SDL_QuitQuit (void)
 

Function Documentation

◆ SDL_EventsInit()

int SDL_EventsInit ( void  )

Definition at line 1002 of file SDL_events.c.

1003{
1005 if (SDL_StartEventLoop() < 0) {
1007 return -1;
1008 }
1009
1010 SDL_QuitInit();
1011
1012 return 0;
1013}
#define SDL_DelHintCallback
#define SDL_AddHintCallback
static void SDL_EventLoggingChanged(void *userdata, const char *name, const char *oldValue, const char *hint)
Definition: SDL_events.c:92
int SDL_StartEventLoop(void)
Definition: SDL_events.c:414
int SDL_QuitInit(void)
Definition: SDL_quit.c:154
#define SDL_HINT_EVENT_LOGGING
A variable controlling whether SDL logs all events pushed onto its internal queue.
Definition: SDL_hints.h:1109
#define NULL
Definition: begin_code.h:167

References NULL, SDL_AddHintCallback, SDL_DelHintCallback, SDL_EventLoggingChanged(), SDL_HINT_EVENT_LOGGING, SDL_QuitInit(), and SDL_StartEventLoop().

Referenced by SDL_InitSubSystem().

◆ SDL_EventsQuit()

void SDL_EventsQuit ( void  )

◆ SDL_QuitInit()

int SDL_QuitInit ( void  )

Definition at line 154 of file SDL_quit.c.

155{
156#ifdef HAVE_SIGNAL_SUPPORT
158 return SDL_QuitInit_Internal();
159 }
160#endif
161 return 0;
162}
#define SDL_GetHintBoolean
#define SDL_HINT_NO_SIGNAL_HANDLERS
Tell SDL not to catch the SIGINT or SIGTERM signals.
Definition: SDL_hints.h:923
static int SDL_QuitInit_Internal(void)
Definition: SDL_quit.c:118
@ SDL_FALSE
Definition: SDL_stdinc.h:163

References SDL_FALSE, SDL_GetHintBoolean, SDL_HINT_NO_SIGNAL_HANDLERS, and SDL_QuitInit_Internal().

Referenced by SDL_EventsInit().

◆ SDL_QuitInterrupt()

void SDL_QuitInterrupt ( void  )

◆ SDL_QuitQuit()

void SDL_QuitQuit ( void  )

Definition at line 165 of file SDL_quit.c.

166{
167#ifdef HAVE_SIGNAL_SUPPORT
168 if (!disable_signals) {
170 }
171#endif
172}
static SDL_bool disable_signals
Definition: SDL_quit.c:39
static void SDL_QuitQuit_Internal(void)
Definition: SDL_quit.c:138

References disable_signals, and SDL_QuitQuit_Internal().

Referenced by SDL_EventsQuit().

◆ SDL_SendAppEvent()

int SDL_SendAppEvent ( SDL_EventType  eventType)

Definition at line 965 of file SDL_events.c.

966{
967 int posted;
968
969 posted = 0;
970 if (SDL_GetEventState(eventType) == SDL_ENABLE) {
972 event.type = eventType;
973 posted = (SDL_PushEvent(&event) > 0);
974 }
975 return (posted);
976}
int SDL_PushEvent(SDL_Event *event)
Add an event to the event queue.
Definition: SDL_events.c:741
#define SDL_GetEventState(type)
Definition: SDL_events.h:772
#define SDL_ENABLE
Definition: SDL_events.h:759
struct _cl_event * event
General event structure.
Definition: SDL_events.h:558

References SDL_ENABLE, SDL_GetEventState, and SDL_PushEvent().

Referenced by SDL_OnApplicationDidBecomeActive(), SDL_OnApplicationDidEnterBackground(), SDL_OnApplicationDidReceiveMemoryWarning(), SDL_OnApplicationWillEnterForeground(), SDL_OnApplicationWillResignActive(), SDL_OnApplicationWillTerminate(), SDL_SendKeymapChangedEvent(), and SDL_SendQuit().

◆ SDL_SendKeymapChangedEvent()

int SDL_SendKeymapChangedEvent ( void  )

Definition at line 996 of file SDL_events.c.

997{
999}
int SDL_SendAppEvent(SDL_EventType eventType)
Definition: SDL_events.c:965
@ SDL_KEYMAPCHANGED
Definition: SDL_events.h:100

References SDL_KEYMAPCHANGED, and SDL_SendAppEvent().

◆ SDL_SendPendingSignalEvents()

void SDL_SendPendingSignalEvents ( void  )

Definition at line 175 of file SDL_quit.c.

176{
177#ifdef HAVE_SIGNAL_SUPPORT
178 if (send_quit_pending) {
179 SDL_SendQuit();
181 }
182
183 #ifdef SDL_BACKGROUNDING_SIGNAL
184 if (send_backgrounding_pending) {
185 send_backgrounding_pending = SDL_FALSE;
187 }
188 #endif
189
190 #ifdef SDL_FOREGROUNDING_SIGNAL
191 if (send_foregrounding_pending) {
192 send_foregrounding_pending = SDL_FALSE;
194 }
195 #endif
196#endif
197}
#define SDL_assert(condition)
Definition: SDL_assert.h:169
static SDL_bool send_quit_pending
Definition: SDL_quit.c:40
int SDL_SendQuit(void)
Definition: SDL_quit.c:201
void SDL_OnApplicationDidBecomeActive(void)
Definition: SDL_video.c:4061
void SDL_OnApplicationWillResignActive(void)
Definition: SDL_video.c:4039

References SDL_assert, SDL_FALSE, SDL_OnApplicationDidBecomeActive(), SDL_OnApplicationWillResignActive(), SDL_SendQuit(), and send_quit_pending.

Referenced by SDL_PumpEvents().

◆ SDL_SendQuit()

int SDL_SendQuit ( void  )

Definition at line 201 of file SDL_quit.c.

202{
203#ifdef HAVE_SIGNAL_SUPPORT
205#endif
207}
@ SDL_QUIT
Definition: SDL_events.h:60

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

Referenced by SDL_SendPendingSignalEvents(), and SDL_SendWindowEvent().

◆ SDL_SendSysWMEvent()

int SDL_SendSysWMEvent ( SDL_SysWMmsg message)

Definition at line 979 of file SDL_events.c.

980{
981 int posted;
982
983 posted = 0;
986 SDL_memset(&event, 0, sizeof(event));
987 event.type = SDL_SYSWMEVENT;
988 event.syswm.msg = message;
989 posted = (SDL_PushEvent(&event) > 0);
990 }
991 /* Update internal event state */
992 return (posted);
993}
#define SDL_memset
@ SDL_SYSWMEVENT
Definition: SDL_events.h:93
GLuint GLsizei const GLchar * message

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

◆ SDL_StartEventLoop()

int SDL_StartEventLoop ( void  )

Definition at line 414 of file SDL_events.c.

415{
416 /* We'll leave the event queue alone, since we might have gotten
417 some important events at launch (like SDL_DROPFILE)
418
419 FIXME: Does this introduce any other bugs with events at startup?
420 */
421
422 /* Create the lock and set ourselves active */
423#if !SDL_THREADS_DISABLED
424 if (!SDL_EventQ.lock) {
426 if (SDL_EventQ.lock == NULL) {
427 return -1;
428 }
429 }
430
434 return -1;
435 }
436 }
437#endif /* !SDL_THREADS_DISABLED */
438
439 /* Process most event types */
443#if 0 /* Leave these events enabled so apps can respond to items being dragged onto them at startup */
446#endif
447
448 SDL_AtomicSet(&SDL_EventQ.active, 1);
449
450 return 0;
451}
#define SDL_AtomicSet
#define SDL_CreateMutex
static SDL_mutex * SDL_event_watchers_lock
Definition: SDL_events.c:45
static struct @23 SDL_EventQ
Uint8 SDL_EventState(Uint32 type, int state)
Definition: SDL_events.c:902
@ SDL_TEXTEDITING
Definition: SDL_events.h:98
@ SDL_DROPTEXT
Definition: SDL_events.h:142
@ SDL_TEXTINPUT
Definition: SDL_events.h:99
@ SDL_DROPFILE
Definition: SDL_events.h:141
#define SDL_DISABLE
Definition: SDL_events.h:758

References NULL, SDL_AtomicSet, SDL_CreateMutex, SDL_DISABLE, SDL_DROPFILE, SDL_DROPTEXT, SDL_event_watchers_lock, SDL_EventQ, SDL_EventState(), SDL_SYSWMEVENT, SDL_TEXTEDITING, and SDL_TEXTINPUT.

Referenced by SDL_EventsInit().

◆ SDL_StopEventLoop()

void SDL_StopEventLoop ( void  )

Definition at line 340 of file SDL_events.c.

341{
342 const char *report = SDL_GetHint("SDL_EVENT_QUEUE_STATISTICS");
343 int i;
344 SDL_EventEntry *entry;
345 SDL_SysWMEntry *wmmsg;
346
347 if (SDL_EventQ.lock) {
349 }
350
351 SDL_AtomicSet(&SDL_EventQ.active, 0);
352
353 if (report && SDL_atoi(report)) {
354 SDL_Log("SDL EVENT QUEUE: Maximum events in-flight: %d\n",
355 SDL_EventQ.max_events_seen);
356 }
357
358 /* Clean out EventQ */
359 for (entry = SDL_EventQ.head; entry; ) {
360 SDL_EventEntry *next = entry->next;
361 SDL_free(entry);
362 entry = next;
363 }
364 for (entry = SDL_EventQ.free; entry; ) {
365 SDL_EventEntry *next = entry->next;
366 SDL_free(entry);
367 entry = next;
368 }
369 for (wmmsg = SDL_EventQ.wmmsg_used; wmmsg; ) {
370 SDL_SysWMEntry *next = wmmsg->next;
371 SDL_free(wmmsg);
372 wmmsg = next;
373 }
374 for (wmmsg = SDL_EventQ.wmmsg_free; wmmsg; ) {
375 SDL_SysWMEntry *next = wmmsg->next;
376 SDL_free(wmmsg);
377 wmmsg = next;
378 }
379
380 SDL_AtomicSet(&SDL_EventQ.count, 0);
381 SDL_EventQ.max_events_seen = 0;
382 SDL_EventQ.head = NULL;
383 SDL_EventQ.tail = NULL;
384 SDL_EventQ.free = NULL;
385 SDL_EventQ.wmmsg_used = NULL;
386 SDL_EventQ.wmmsg_free = NULL;
387
388 /* Clear disabled event state */
389 for (i = 0; i < SDL_arraysize(SDL_disabled_events); ++i) {
392 }
393
397 }
398 if (SDL_event_watchers) {
402 }
404
405 if (SDL_EventQ.lock) {
408 SDL_EventQ.lock = NULL;
409 }
410}
#define SDL_LockMutex
#define SDL_free
#define SDL_DestroyMutex
#define SDL_atoi
#define SDL_Log
#define SDL_GetHint
#define SDL_UnlockMutex
static int SDL_event_watchers_count
Definition: SDL_events.c:48
static SDL_EventWatcher * SDL_event_watchers
Definition: SDL_events.c:47
static SDL_DisabledEventBlock * SDL_disabled_events[256]
Definition: SDL_events.c:56
static SDL_EventWatcher SDL_EventOK
Definition: SDL_events.c:46
#define SDL_zero(x)
Definition: SDL_stdinc.h:416
#define SDL_arraysize(array)
Definition: SDL_stdinc.h:115
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
Definition: SDL_events.c:61
struct _SDL_EventEntry * next
Definition: SDL_events.c:65
Definition: SDL_events.c:69
struct _SDL_SysWMEntry * next
Definition: SDL_events.c:71

References i, SDL_EventEntry::next, SDL_SysWMEntry::next, NULL, SDL_arraysize, SDL_atoi, SDL_AtomicSet, SDL_DestroyMutex, SDL_disabled_events, SDL_event_watchers, SDL_event_watchers_count, SDL_event_watchers_lock, SDL_EventOK, SDL_EventQ, SDL_free, SDL_GetHint, SDL_LockMutex, SDL_Log, SDL_UnlockMutex, and SDL_zero.

Referenced by SDL_EventsQuit().