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)
 

Function Documentation

◆ SDL_QuitInit()

int SDL_QuitInit ( void  )

Definition at line 92 of file SDL_quit.c.

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

Referenced by SDL_InitSubSystem().

93 {
95  return SDL_QuitInit_Internal();
96  }
97  return 0;
98 }
#define SDL_GetHintBoolean
#define SDL_HINT_NO_SIGNAL_HANDLERS
Tell SDL not to catch the SIGINT or SIGTERM signals.
Definition: SDL_hints.h:791
static int SDL_QuitInit_Internal(void)
Definition: SDL_quit.c:52

◆ SDL_QuitInterrupt()

void SDL_QuitInterrupt ( void  )

◆ SDL_QuitQuit()

void SDL_QuitQuit ( void  )

Definition at line 128 of file SDL_quit.c.

References disable_signals, and SDL_QuitQuit_Internal().

Referenced by SDL_QuitSubSystem().

129 {
130  if (!disable_signals) {
132  }
133 }
static SDL_bool disable_signals
Definition: SDL_quit.c:34
static void SDL_QuitQuit_Internal(void)
Definition: SDL_quit.c:101

◆ SDL_SendAppEvent()

int SDL_SendAppEvent ( SDL_EventType  eventType)

Definition at line 919 of file SDL_events.c.

References SDL_ENABLE, SDL_GetEventState, and SDL_PushEvent().

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

920 {
921  int posted;
922 
923  posted = 0;
924  if (SDL_GetEventState(eventType) == SDL_ENABLE) {
926  event.type = eventType;
927  posted = (SDL_PushEvent(&event) > 0);
928  }
929  return (posted);
930 }
#define SDL_ENABLE
Definition: SDL_events.h:722
#define SDL_GetEventState(type)
Definition: SDL_events.h:735
struct _cl_event * event
int SDL_PushEvent(SDL_Event *event)
Add an event to the event queue.
Definition: SDL_events.c:703
General event structure.
Definition: SDL_events.h:525

◆ SDL_SendKeymapChangedEvent()

int SDL_SendKeymapChangedEvent ( void  )

Definition at line 950 of file SDL_events.c.

References SDL_KEYMAPCHANGED, and SDL_SendAppEvent().

951 {
953 }
int SDL_SendAppEvent(SDL_EventType eventType)
Definition: SDL_events.c:919

◆ SDL_SendPendingQuit()

void SDL_SendPendingQuit ( void  )

Definition at line 144 of file SDL_quit.c.

References SDL_assert, SDL_SendQuit(), and send_quit_pending.

Referenced by SDL_PumpEvents().

145 {
146  if (send_quit_pending) {
147  SDL_SendQuit();
149  }
150 }
static SDL_bool send_quit_pending
Definition: SDL_quit.c:35
int SDL_SendQuit(void)
Definition: SDL_quit.c:137
#define SDL_assert(condition)
Definition: SDL_assert.h:169

◆ SDL_SendQuit()

int SDL_SendQuit ( void  )

Definition at line 137 of file SDL_quit.c.

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

Referenced by SDL_SendPendingQuit(), and SDL_SendWindowEvent().

138 {
140  return SDL_SendAppEvent(SDL_QUIT);
141 }
static SDL_bool send_quit_pending
Definition: SDL_quit.c:35
int SDL_SendAppEvent(SDL_EventType eventType)
Definition: SDL_events.c:919

◆ SDL_SendSysWMEvent()

int SDL_SendSysWMEvent ( SDL_SysWMmsg message)

Definition at line 933 of file SDL_events.c.

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

934 {
935  int posted;
936 
937  posted = 0;
940  SDL_memset(&event, 0, sizeof(event));
941  event.type = SDL_SYSWMEVENT;
942  event.syswm.msg = message;
943  posted = (SDL_PushEvent(&event) > 0);
944  }
945  /* Update internal event state */
946  return (posted);
947 }
GLuint GLsizei const GLchar * message
#define SDL_ENABLE
Definition: SDL_events.h:722
#define SDL_GetEventState(type)
Definition: SDL_events.h:735
struct _cl_event * event
int SDL_PushEvent(SDL_Event *event)
Add an event to the event queue.
Definition: SDL_events.c:703
General event structure.
Definition: SDL_events.h:525
#define SDL_memset

◆ SDL_StartEventLoop()

int SDL_StartEventLoop ( void  )

Definition at line 391 of file SDL_events.c.

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

Referenced by SDL_InitSubSystem().

392 {
393  /* We'll leave the event queue alone, since we might have gotten
394  some important events at launch (like SDL_DROPFILE)
395 
396  FIXME: Does this introduce any other bugs with events at startup?
397  */
398 
399  /* Create the lock and set ourselves active */
400 #if !SDL_THREADS_DISABLED
401  if (!SDL_EventQ.lock) {
402  SDL_EventQ.lock = SDL_CreateMutex();
403  if (SDL_EventQ.lock == NULL) {
404  return -1;
405  }
406  }
407 
410  if (SDL_event_watchers_lock == NULL) {
411  return -1;
412  }
413  }
414 #endif /* !SDL_THREADS_DISABLED */
415 
416  /* Process most event types */
420 
421  SDL_AtomicSet(&SDL_EventQ.active, 1);
422 
423  return 0;
424 }
#define SDL_CreateMutex
static struct @22 SDL_EventQ
Uint8 SDL_EventState(Uint32 type, int state)
Definition: SDL_events.c:864
#define SDL_DISABLE
Definition: SDL_events.h:721
#define NULL
Definition: begin_code.h:164
static SDL_mutex * SDL_event_watchers_lock
Definition: SDL_events.c:47
#define SDL_AtomicSet

◆ SDL_StopEventLoop()

void SDL_StopEventLoop ( void  )

Definition at line 317 of file SDL_events.c.

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

Referenced by SDL_QuitSubSystem().

318 {
319  const char *report = SDL_GetHint("SDL_EVENT_QUEUE_STATISTICS");
320  int i;
321  SDL_EventEntry *entry;
322  SDL_SysWMEntry *wmmsg;
323 
324  if (SDL_EventQ.lock) {
326  }
327 
328  SDL_AtomicSet(&SDL_EventQ.active, 0);
329 
330  if (report && SDL_atoi(report)) {
331  SDL_Log("SDL EVENT QUEUE: Maximum events in-flight: %d\n",
332  SDL_EventQ.max_events_seen);
333  }
334 
335  /* Clean out EventQ */
336  for (entry = SDL_EventQ.head; entry; ) {
337  SDL_EventEntry *next = entry->next;
338  SDL_free(entry);
339  entry = next;
340  }
341  for (entry = SDL_EventQ.free; entry; ) {
342  SDL_EventEntry *next = entry->next;
343  SDL_free(entry);
344  entry = next;
345  }
346  for (wmmsg = SDL_EventQ.wmmsg_used; wmmsg; ) {
347  SDL_SysWMEntry *next = wmmsg->next;
348  SDL_free(wmmsg);
349  wmmsg = next;
350  }
351  for (wmmsg = SDL_EventQ.wmmsg_free; wmmsg; ) {
352  SDL_SysWMEntry *next = wmmsg->next;
353  SDL_free(wmmsg);
354  wmmsg = next;
355  }
356 
357  SDL_AtomicSet(&SDL_EventQ.count, 0);
358  SDL_EventQ.max_events_seen = 0;
359  SDL_EventQ.head = NULL;
360  SDL_EventQ.tail = NULL;
361  SDL_EventQ.free = NULL;
362  SDL_EventQ.wmmsg_used = NULL;
363  SDL_EventQ.wmmsg_free = NULL;
364 
365  /* Clear disabled event state */
366  for (i = 0; i < SDL_arraysize(SDL_disabled_events); ++i) {
369  }
370 
374  }
375  if (SDL_event_watchers) {
379  }
381 
382  if (SDL_EventQ.lock) {
385  SDL_EventQ.lock = NULL;
386  }
387 }
#define SDL_LockMutex
static SDL_EventWatcher * SDL_event_watchers
Definition: SDL_events.c:49
struct _SDL_EventEntry * next
Definition: SDL_events.c:67
static int SDL_event_watchers_count
Definition: SDL_events.c:50
#define SDL_GetHint
Definition: SDL_events.c:70
static struct @22 SDL_EventQ
struct _SDL_SysWMEntry * next
Definition: SDL_events.c:73
#define SDL_Log
#define SDL_free
#define SDL_zero(x)
Definition: SDL_stdinc.h:416
Definition: SDL_events.c:62
#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:50
#define NULL
Definition: begin_code.h:164
#define SDL_DestroyMutex
static SDL_DisabledEventBlock * SDL_disabled_events[256]
Definition: SDL_events.c:58
static SDL_mutex * SDL_event_watchers_lock
Definition: SDL_events.c:47
#define SDL_AtomicSet
static SDL_EventWatcher SDL_EventOK
Definition: SDL_events.c:48
#define SDL_UnlockMutex
#define SDL_arraysize(array)
Definition: SDL_stdinc.h:93