23 #if defined(__WIN32__) 36 #ifndef WS_OVERLAPPEDWINDOW 37 #define WS_OVERLAPPEDWINDOW 0 42 #if ! defined(__WINRT__) 79 data->trigger_count++;
80 if (data->trigger_count == 1) {
94 debug_print(
"All SDL assertions between last init/quit:\n\n");
96 while (item !=
NULL) {
100 " * triggered %u time%s.\n" 101 " * always ignore: %s.\n",
102 item->condition, item->function, item->filename,
103 item->linenum, item->trigger_count,
104 (item->trigger_count == 1) ?
"" :
"s",
105 item->always_ignore ?
"yes" :
"no");
117 ExitProcess(exitcode);
134 #define ENDLINE "\r\n" 163 "Assertion failure at %s (%s:%d), triggered %u %s:" ENDLINE 165 data->function, data->filename, data->linenum,
166 data->trigger_count, (data->trigger_count == 1) ?
"time" :
"times",
184 }
else if (
SDL_strcmp(envr,
"always_ignore") == 0) {
207 messagebox.
title =
"Assertion Failed";
213 if (selected == -1) {
225 fprintf(stderr,
"Abort/Break/Retry/Ignore/AlwaysIgnore? [abriA] : ");
227 if (fgets(buf,
sizeof (buf), stdin) ==
NULL) {
266 static int assertion_running = 0;
271 if (assertion_mutex ==
NULL) {
273 if (assertion_mutex ==
NULL) {
285 if (data->trigger_count == 0) {
286 data->function =
func;
287 data->filename = file;
288 data->linenum = line;
294 if (assertion_running > 1) {
295 if (assertion_running == 2) {
297 }
else if (assertion_running == 3) {
304 if (!data->always_ignore) {
316 data->always_ignore = 1;
335 if (assertion_mutex !=
NULL) {
337 assertion_mutex =
NULL;
343 if (handler !=
NULL) {
364 item->trigger_count = 0;
378 if (userdata !=
NULL) {
static SDL_AssertionHandler assertion_handler
SDL_AssertState(* SDL_AssertionHandler)(const SDL_AssertData *data, void *userdata)
#define SDL_MAX_LOG_MESSAGE
The maximum size of a log message.
static void SDL_GenerateAssertionReport(void)
static SDL_assert_data * triggered_assertions
GLuint GLsizei const GLchar * message
static void SDL_AbortAssertion(void)
void SDL_ResetAssertionReport(void)
Reset the list of all assertion failures.
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
#define SDL_GetWindowFlags
static void * assertion_userdata
#define SDL_MinimizeWindow
static SDL_assert_state SDL_PromptAssertion(const SDL_assert_data *data, void *userdata)
const SDL_assert_data * SDL_GetAssertionReport(void)
Get a list of all assertion failures.
static void debug_print(const char *fmt,...)
void SDL_SetAssertionHandler(SDL_AssertionHandler handler, void *userdata)
Set an application-defined assertion handler.
void SDL_AssertionsQuit(void)
#define SDL_stack_alloc(type, count)
SDL_Window * SDL_GetFocusWindow(void)
SDL_AssertionHandler SDL_GetAssertionHandler(void **userdata)
Get the current assertion handler.
GLenum GLuint GLenum GLsizei const GLchar * buf
const SDL_MessageBoxButtonData * buttons
MessageBox structure containing title, text, window, etc.
#define SDL_RestoreWindow
static void SDL_AddAssertionToReport(SDL_assert_data *data)
#define SDL_ShowMessageBox
SDL_PRINTF_FORMAT_STRING const char int SDL_PRINTF_FORMAT_STRING const char int SDL_PRINTF_FORMAT_STRING const char int SDL_PRINTF_FORMAT_STRING const char const char SDL_SCANF_FORMAT_STRING const char return SDL_ThreadFunction const char void return Uint32 return Uint32 void
GLint GLint GLsizei GLsizei GLsizei GLint GLenum format
The type used to identify a window.
static SDL_mutex * assertion_mutex
SDL_AssertionHandler SDL_GetDefaultAssertionHandler(void)
Get the default assertion handler.
#define SDL_arraysize(array)
#define SDL_stack_free(data)
SDL_assert_state SDL_ReportAssertion(SDL_assert_data *data, const char *func, const char *file, int line)
static void SDL_ExitProcess(int exitcode)