mirror of
https://github.com/TorqueGameEngines/Torque3D.git
synced 2026-07-14 16:14:38 +00:00
update sdl to https://github.com/libsdl-org/SDL 22March 2022
This commit is contained in:
parent
ee4253c982
commit
2614274639
1225 changed files with 148950 additions and 51674 deletions
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
Simple DirectMedia Layer
|
||||
Copyright (C) 1997-2020 Sam Lantinga <slouken@libsdl.org>
|
||||
Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
|
|
@ -104,7 +104,7 @@ void SDLTest_AssertPass(SDL_PRINTF_FORMAT_STRING const char *assertDescription,
|
|||
|
||||
/* Log pass message */
|
||||
SDLTest_AssertsPassed++;
|
||||
SDLTest_Log(SDLTEST_ASSERT_CHECK_FORMAT, logMessage, "Pass");
|
||||
SDLTest_Log(SDLTEST_ASSERT_CHECK_FORMAT, logMessage, "Passed");
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
Simple DirectMedia Layer
|
||||
Copyright (C) 1997-2020 Sam Lantinga <slouken@libsdl.org>
|
||||
Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
|
|
@ -30,12 +30,15 @@ static const char *video_usage[] = {
|
|||
"[--video driver]", "[--renderer driver]", "[--gldebug]",
|
||||
"[--info all|video|modes|render|event]",
|
||||
"[--log all|error|system|audio|video|render|input]", "[--display N]",
|
||||
"[--metal-window | --opengl-window | --vulkan-window]",
|
||||
"[--fullscreen | --fullscreen-desktop | --windows N]", "[--title title]",
|
||||
"[--icon icon.bmp]", "[--center | --position X,Y]", "[--geometry WxH]",
|
||||
"[--min-geometry WxH]", "[--max-geometry WxH]", "[--logical WxH]",
|
||||
"[--scale N]", "[--depth N]", "[--refresh R]", "[--vsync]", "[--noframe]",
|
||||
"[--resize]", "[--minimize]", "[--maximize]", "[--grab]",
|
||||
"[--allow-highdpi]", "[--usable-bounds]"
|
||||
"[--resizable]", "[--minimize]", "[--maximize]", "[--grab]", "[--keyboard-grab]",
|
||||
"[--shown]", "[--hidden]", "[--input-focus]", "[--mouse-focus]",
|
||||
"[--flash-on-focus-loss]", "[--allow-highdpi]", "[--confine-cursor X,Y,W,H]",
|
||||
"[--usable-bounds]"
|
||||
};
|
||||
|
||||
static const char *audio_usage[] = {
|
||||
|
|
@ -218,6 +221,18 @@ SDLTest_CommonArg(SDLTest_CommonState * state, int index)
|
|||
}
|
||||
return 2;
|
||||
}
|
||||
if (SDL_strcasecmp(argv[index], "--metal-window") == 0) {
|
||||
state->window_flags |= SDL_WINDOW_METAL;
|
||||
return 1;
|
||||
}
|
||||
if (SDL_strcasecmp(argv[index], "--opengl-window") == 0) {
|
||||
state->window_flags |= SDL_WINDOW_OPENGL;
|
||||
return 1;
|
||||
}
|
||||
if (SDL_strcasecmp(argv[index], "--vulkan-window") == 0) {
|
||||
state->window_flags |= SDL_WINDOW_VULKAN;
|
||||
return 1;
|
||||
}
|
||||
if (SDL_strcasecmp(argv[index], "--fullscreen") == 0) {
|
||||
state->window_flags |= SDL_WINDOW_FULLSCREEN;
|
||||
state->num_windows = 1;
|
||||
|
|
@ -234,7 +249,7 @@ SDLTest_CommonArg(SDLTest_CommonState * state, int index)
|
|||
}
|
||||
if (SDL_strcasecmp(argv[index], "--windows") == 0) {
|
||||
++index;
|
||||
if (!argv[index] || !SDL_isdigit(*argv[index])) {
|
||||
if (!argv[index] || !SDL_isdigit((unsigned char) *argv[index])) {
|
||||
return -1;
|
||||
}
|
||||
if (!(state->window_flags & SDL_WINDOW_FULLSCREEN)) {
|
||||
|
|
@ -282,6 +297,34 @@ SDLTest_CommonArg(SDLTest_CommonState * state, int index)
|
|||
state->window_y = SDL_atoi(y);
|
||||
return 2;
|
||||
}
|
||||
if (SDL_strcasecmp(argv[index], "--confine-cursor") == 0) {
|
||||
char *x, *y, *w, *h;
|
||||
++index;
|
||||
if (!argv[index]) {
|
||||
return -1;
|
||||
}
|
||||
x = argv[index];
|
||||
y = argv[index];
|
||||
#define SEARCHARG(dim) \
|
||||
while (*dim && *dim != ',') { \
|
||||
++dim; \
|
||||
} \
|
||||
if (!*dim) { \
|
||||
return -1; \
|
||||
} \
|
||||
*dim++ = '\0';
|
||||
SEARCHARG(y)
|
||||
w = y;
|
||||
SEARCHARG(w)
|
||||
h = w;
|
||||
SEARCHARG(h)
|
||||
#undef SEARCHARG
|
||||
state->confine.x = SDL_atoi(x);
|
||||
state->confine.y = SDL_atoi(y);
|
||||
state->confine.w = SDL_atoi(w);
|
||||
state->confine.h = SDL_atoi(h);
|
||||
return 2;
|
||||
}
|
||||
if (SDL_strcasecmp(argv[index], "--usable-bounds") == 0) {
|
||||
/* !!! FIXME: this is a bit of a hack, but I don't want to add a
|
||||
!!! FIXME: flag to the public structure in 2.0.x */
|
||||
|
|
@ -399,7 +442,7 @@ SDLTest_CommonArg(SDLTest_CommonState * state, int index)
|
|||
state->window_flags |= SDL_WINDOW_BORDERLESS;
|
||||
return 1;
|
||||
}
|
||||
if (SDL_strcasecmp(argv[index], "--resize") == 0) {
|
||||
if (SDL_strcasecmp(argv[index], "--resizable") == 0) {
|
||||
state->window_flags |= SDL_WINDOW_RESIZABLE;
|
||||
return 1;
|
||||
}
|
||||
|
|
@ -411,8 +454,32 @@ SDLTest_CommonArg(SDLTest_CommonState * state, int index)
|
|||
state->window_flags |= SDL_WINDOW_MAXIMIZED;
|
||||
return 1;
|
||||
}
|
||||
if (SDL_strcasecmp(argv[index], "--shown") == 0) {
|
||||
state->window_flags |= SDL_WINDOW_SHOWN;
|
||||
return 1;
|
||||
}
|
||||
if (SDL_strcasecmp(argv[index], "--hidden") == 0) {
|
||||
state->window_flags |= SDL_WINDOW_HIDDEN;
|
||||
return 1;
|
||||
}
|
||||
if (SDL_strcasecmp(argv[index], "--input-focus") == 0) {
|
||||
state->window_flags |= SDL_WINDOW_INPUT_FOCUS;
|
||||
return 1;
|
||||
}
|
||||
if (SDL_strcasecmp(argv[index], "--mouse-focus") == 0) {
|
||||
state->window_flags |= SDL_WINDOW_MOUSE_FOCUS;
|
||||
return 1;
|
||||
}
|
||||
if (SDL_strcasecmp(argv[index], "--flash-on-focus-loss") == 0) {
|
||||
state->flash_on_focus_loss = SDL_TRUE;
|
||||
return 1;
|
||||
}
|
||||
if (SDL_strcasecmp(argv[index], "--grab") == 0) {
|
||||
state->window_flags |= SDL_WINDOW_INPUT_GRABBED;
|
||||
state->window_flags |= SDL_WINDOW_MOUSE_GRABBED;
|
||||
return 1;
|
||||
}
|
||||
if (SDL_strcasecmp(argv[index], "--keyboard-grab") == 0) {
|
||||
state->window_flags |= SDL_WINDOW_KEYBOARD_GRABBED;
|
||||
return 1;
|
||||
}
|
||||
if (SDL_strcasecmp(argv[index], "--rate") == 0) {
|
||||
|
|
@ -595,6 +662,170 @@ SDLTest_CommonDefaultArgs(SDLTest_CommonState *state, const int argc, char **arg
|
|||
return SDL_TRUE;
|
||||
}
|
||||
|
||||
static void
|
||||
SDLTest_PrintDisplayOrientation(char* text, size_t maxlen, SDL_DisplayOrientation orientation)
|
||||
{
|
||||
switch (orientation) {
|
||||
case SDL_ORIENTATION_UNKNOWN:
|
||||
SDL_snprintfcat(text, maxlen, "UNKNOWN");
|
||||
break;
|
||||
case SDL_ORIENTATION_LANDSCAPE:
|
||||
SDL_snprintfcat(text, maxlen, "LANDSCAPE");
|
||||
break;
|
||||
case SDL_ORIENTATION_LANDSCAPE_FLIPPED:
|
||||
SDL_snprintfcat(text, maxlen, "LANDSCAPE_FLIPPED");
|
||||
break;
|
||||
case SDL_ORIENTATION_PORTRAIT:
|
||||
SDL_snprintfcat(text, maxlen, "PORTRAIT");
|
||||
break;
|
||||
case SDL_ORIENTATION_PORTRAIT_FLIPPED:
|
||||
SDL_snprintfcat(text, maxlen, "PORTRAIT_FLIPPED");
|
||||
break;
|
||||
default:
|
||||
SDL_snprintfcat(text, maxlen, "0x%8.8x", orientation);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
SDLTest_PrintWindowFlag(char* text, size_t maxlen, Uint32 flag)
|
||||
{
|
||||
switch (flag) {
|
||||
case SDL_WINDOW_FULLSCREEN:
|
||||
SDL_snprintfcat(text, maxlen, "FULLSCREEN");
|
||||
break;
|
||||
case SDL_WINDOW_OPENGL:
|
||||
SDL_snprintfcat(text, maxlen, "OPENGL");
|
||||
break;
|
||||
case SDL_WINDOW_SHOWN:
|
||||
SDL_snprintfcat(text, maxlen, "SHOWN");
|
||||
break;
|
||||
case SDL_WINDOW_HIDDEN:
|
||||
SDL_snprintfcat(text, maxlen, "HIDDEN");
|
||||
break;
|
||||
case SDL_WINDOW_BORDERLESS:
|
||||
SDL_snprintfcat(text, maxlen, "BORDERLESS");
|
||||
break;
|
||||
case SDL_WINDOW_RESIZABLE:
|
||||
SDL_snprintfcat(text, maxlen, "RESIZABLE");
|
||||
break;
|
||||
case SDL_WINDOW_MINIMIZED:
|
||||
SDL_snprintfcat(text, maxlen, "MINIMIZED");
|
||||
break;
|
||||
case SDL_WINDOW_MAXIMIZED:
|
||||
SDL_snprintfcat(text, maxlen, "MAXIMIZED");
|
||||
break;
|
||||
case SDL_WINDOW_MOUSE_GRABBED:
|
||||
SDL_snprintfcat(text, maxlen, "MOUSE_GRABBED");
|
||||
break;
|
||||
case SDL_WINDOW_INPUT_FOCUS:
|
||||
SDL_snprintfcat(text, maxlen, "INPUT_FOCUS");
|
||||
break;
|
||||
case SDL_WINDOW_MOUSE_FOCUS:
|
||||
SDL_snprintfcat(text, maxlen, "MOUSE_FOCUS");
|
||||
break;
|
||||
case SDL_WINDOW_FULLSCREEN_DESKTOP:
|
||||
SDL_snprintfcat(text, maxlen, "FULLSCREEN_DESKTOP");
|
||||
break;
|
||||
case SDL_WINDOW_FOREIGN:
|
||||
SDL_snprintfcat(text, maxlen, "FOREIGN");
|
||||
break;
|
||||
case SDL_WINDOW_ALLOW_HIGHDPI:
|
||||
SDL_snprintfcat(text, maxlen, "ALLOW_HIGHDPI");
|
||||
break;
|
||||
case SDL_WINDOW_MOUSE_CAPTURE:
|
||||
SDL_snprintfcat(text, maxlen, "MOUSE_CAPTURE");
|
||||
break;
|
||||
case SDL_WINDOW_ALWAYS_ON_TOP:
|
||||
SDL_snprintfcat(text, maxlen, "ALWAYS_ON_TOP");
|
||||
break;
|
||||
case SDL_WINDOW_SKIP_TASKBAR:
|
||||
SDL_snprintfcat(text, maxlen, "SKIP_TASKBAR");
|
||||
break;
|
||||
case SDL_WINDOW_UTILITY:
|
||||
SDL_snprintfcat(text, maxlen, "UTILITY");
|
||||
break;
|
||||
case SDL_WINDOW_TOOLTIP:
|
||||
SDL_snprintfcat(text, maxlen, "TOOLTIP");
|
||||
break;
|
||||
case SDL_WINDOW_POPUP_MENU:
|
||||
SDL_snprintfcat(text, maxlen, "POPUP_MENU");
|
||||
break;
|
||||
case SDL_WINDOW_KEYBOARD_GRABBED:
|
||||
SDL_snprintfcat(text, maxlen, "KEYBOARD_GRABBED");
|
||||
break;
|
||||
case SDL_WINDOW_VULKAN:
|
||||
SDL_snprintfcat(text, maxlen, "VULKAN");
|
||||
break;
|
||||
case SDL_WINDOW_METAL:
|
||||
SDL_snprintfcat(text, maxlen, "METAL");
|
||||
break;
|
||||
default:
|
||||
SDL_snprintfcat(text, maxlen, "0x%8.8x", flag);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
SDLTest_PrintWindowFlags(char* text, size_t maxlen, Uint32 flags)
|
||||
{
|
||||
const Uint32 window_flags[] = {
|
||||
SDL_WINDOW_FULLSCREEN,
|
||||
SDL_WINDOW_OPENGL,
|
||||
SDL_WINDOW_SHOWN,
|
||||
SDL_WINDOW_HIDDEN,
|
||||
SDL_WINDOW_BORDERLESS,
|
||||
SDL_WINDOW_RESIZABLE,
|
||||
SDL_WINDOW_MINIMIZED,
|
||||
SDL_WINDOW_MAXIMIZED,
|
||||
SDL_WINDOW_MOUSE_GRABBED,
|
||||
SDL_WINDOW_INPUT_FOCUS,
|
||||
SDL_WINDOW_MOUSE_FOCUS,
|
||||
SDL_WINDOW_FULLSCREEN_DESKTOP,
|
||||
SDL_WINDOW_FOREIGN,
|
||||
SDL_WINDOW_ALLOW_HIGHDPI,
|
||||
SDL_WINDOW_MOUSE_CAPTURE,
|
||||
SDL_WINDOW_ALWAYS_ON_TOP,
|
||||
SDL_WINDOW_SKIP_TASKBAR,
|
||||
SDL_WINDOW_UTILITY,
|
||||
SDL_WINDOW_TOOLTIP,
|
||||
SDL_WINDOW_POPUP_MENU,
|
||||
SDL_WINDOW_KEYBOARD_GRABBED,
|
||||
SDL_WINDOW_VULKAN,
|
||||
SDL_WINDOW_METAL
|
||||
};
|
||||
|
||||
int i;
|
||||
int count = 0;
|
||||
for (i = 0; i < (sizeof(window_flags) / sizeof(window_flags[0])); ++i) {
|
||||
const Uint32 flag = window_flags[i];
|
||||
if ((flags & flag) == flag) {
|
||||
if (count > 0) {
|
||||
SDL_snprintfcat(text, maxlen, " | ");
|
||||
}
|
||||
SDLTest_PrintWindowFlag(text, maxlen, flag);
|
||||
++count;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
SDLTest_PrintButtonMask(char* text, size_t maxlen, Uint32 flags)
|
||||
{
|
||||
int i;
|
||||
int count = 0;
|
||||
for (i = 1; i <= 32; ++i) {
|
||||
const Uint32 flag = SDL_BUTTON(i);
|
||||
if ((flags & flag) == flag) {
|
||||
if (count > 0) {
|
||||
SDL_snprintfcat(text, maxlen, " | ");
|
||||
}
|
||||
SDL_snprintfcat(text, maxlen, "SDL_BUTTON(%d)", i);
|
||||
++count;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
SDLTest_PrintRendererFlag(char *text, size_t maxlen, Uint32 flag)
|
||||
{
|
||||
|
|
@ -734,7 +965,7 @@ SDLTest_PrintRenderer(SDL_RendererInfo * info)
|
|||
|
||||
SDL_Log(" Renderer %s:\n", info->name);
|
||||
|
||||
SDL_snprintf(text, sizeof(text), " Flags: 0x%8.8X", info->flags);
|
||||
SDL_snprintf(text, sizeof(text), " Flags: 0x%8.8" SDL_PRIX32, info->flags);
|
||||
SDL_snprintfcat(text, sizeof(text), " (");
|
||||
count = 0;
|
||||
for (i = 0; i < sizeof(info->flags) * 8; ++i) {
|
||||
|
|
@ -750,7 +981,7 @@ SDLTest_PrintRenderer(SDL_RendererInfo * info)
|
|||
SDL_snprintfcat(text, sizeof(text), ")");
|
||||
SDL_Log("%s\n", text);
|
||||
|
||||
SDL_snprintf(text, sizeof(text), " Texture formats (%d): ", info->num_texture_formats);
|
||||
SDL_snprintf(text, sizeof(text), " Texture formats (%" SDL_PRIu32 "): ", info->num_texture_formats);
|
||||
for (i = 0; i < (int) info->num_texture_formats; ++i) {
|
||||
if (i > 0) {
|
||||
SDL_snprintfcat(text, sizeof(text), ", ");
|
||||
|
|
@ -931,11 +1162,11 @@ SDLTest_CommonInit(SDLTest_CommonState * state)
|
|||
mode.w, mode.h, mode.refresh_rate, bpp,
|
||||
SDL_GetPixelFormatName(mode.format));
|
||||
if (Rmask || Gmask || Bmask) {
|
||||
SDL_Log(" Red Mask = 0x%.8x\n", Rmask);
|
||||
SDL_Log(" Green Mask = 0x%.8x\n", Gmask);
|
||||
SDL_Log(" Blue Mask = 0x%.8x\n", Bmask);
|
||||
SDL_Log(" Red Mask = 0x%.8" SDL_PRIx32 "\n", Rmask);
|
||||
SDL_Log(" Green Mask = 0x%.8" SDL_PRIx32 "\n", Gmask);
|
||||
SDL_Log(" Blue Mask = 0x%.8" SDL_PRIx32 "\n", Bmask);
|
||||
if (Amask)
|
||||
SDL_Log(" Alpha Mask = 0x%.8x\n", Amask);
|
||||
SDL_Log(" Alpha Mask = 0x%.8" SDL_PRIx32 "\n", Amask);
|
||||
}
|
||||
|
||||
/* Print available fullscreen video modes */
|
||||
|
|
@ -952,14 +1183,14 @@ SDLTest_CommonInit(SDLTest_CommonState * state)
|
|||
j, mode.w, mode.h, mode.refresh_rate, bpp,
|
||||
SDL_GetPixelFormatName(mode.format));
|
||||
if (Rmask || Gmask || Bmask) {
|
||||
SDL_Log(" Red Mask = 0x%.8x\n",
|
||||
SDL_Log(" Red Mask = 0x%.8" SDL_PRIx32 "\n",
|
||||
Rmask);
|
||||
SDL_Log(" Green Mask = 0x%.8x\n",
|
||||
SDL_Log(" Green Mask = 0x%.8" SDL_PRIx32 "\n",
|
||||
Gmask);
|
||||
SDL_Log(" Blue Mask = 0x%.8x\n",
|
||||
SDL_Log(" Blue Mask = 0x%.8" SDL_PRIx32 "\n",
|
||||
Bmask);
|
||||
if (Amask)
|
||||
SDL_Log(" Alpha Mask = 0x%.8x\n",
|
||||
SDL_Log(" Alpha Mask = 0x%.8" SDL_PRIx32 "\n",
|
||||
Amask);
|
||||
}
|
||||
}
|
||||
|
|
@ -1061,7 +1292,7 @@ SDLTest_CommonInit(SDLTest_CommonState * state)
|
|||
SDL_GetWindowSize(state->windows[i], &w, &h);
|
||||
if (!(state->window_flags & SDL_WINDOW_RESIZABLE) &&
|
||||
(w != state->window_w || h != state->window_h)) {
|
||||
printf("Window requested size %dx%d, got %dx%d\n", state->window_w, state->window_h, w, h);
|
||||
SDL_Log("Window requested size %dx%d, got %dx%d\n", state->window_w, state->window_h, w, h);
|
||||
state->window_w = w;
|
||||
state->window_h = h;
|
||||
}
|
||||
|
|
@ -1087,17 +1318,20 @@ SDLTest_CommonInit(SDLTest_CommonState * state)
|
|||
|
||||
SDL_ShowWindow(state->windows[i]);
|
||||
|
||||
if (!SDL_RectEmpty(&state->confine)) {
|
||||
SDL_SetWindowMouseRect(state->windows[i], &state->confine);
|
||||
}
|
||||
|
||||
if (!state->skip_renderer
|
||||
&& (state->renderdriver
|
||||
|| !(state->window_flags & (SDL_WINDOW_OPENGL | SDL_WINDOW_VULKAN)))) {
|
||||
|| !(state->window_flags & (SDL_WINDOW_OPENGL | SDL_WINDOW_VULKAN | SDL_WINDOW_METAL)))) {
|
||||
m = -1;
|
||||
if (state->renderdriver) {
|
||||
SDL_RendererInfo info;
|
||||
n = SDL_GetNumRenderDrivers();
|
||||
for (j = 0; j < n; ++j) {
|
||||
SDL_GetRenderDriverInfo(j, &info);
|
||||
if (SDL_strcasecmp(info.name, state->renderdriver) ==
|
||||
0) {
|
||||
if (SDL_strcasecmp(info.name, state->renderdriver) == 0) {
|
||||
m = j;
|
||||
break;
|
||||
}
|
||||
|
|
@ -1238,11 +1472,20 @@ SDLTest_PrintEvent(SDL_Event * event)
|
|||
switch (event->type) {
|
||||
case SDL_DISPLAYEVENT:
|
||||
switch (event->display.event) {
|
||||
case SDL_DISPLAYEVENT_CONNECTED:
|
||||
SDL_Log("SDL EVENT: Display %" SDL_PRIu32 " connected",
|
||||
event->display.display);
|
||||
break;
|
||||
case SDL_DISPLAYEVENT_ORIENTATION:
|
||||
SDL_Log("SDL EVENT: Display %d changed orientation to %s", event->display.display, DisplayOrientationName(event->display.data1));
|
||||
SDL_Log("SDL EVENT: Display %" SDL_PRIu32 " changed orientation to %s",
|
||||
event->display.display, DisplayOrientationName(event->display.data1));
|
||||
break;
|
||||
case SDL_DISPLAYEVENT_DISCONNECTED:
|
||||
SDL_Log("SDL EVENT: Display %" SDL_PRIu32 " disconnected",
|
||||
event->display.display);
|
||||
break;
|
||||
default:
|
||||
SDL_Log("SDL EVENT: Display %d got unknown event 0x%4.4x",
|
||||
SDL_Log("SDL EVENT: Display %" SDL_PRIu32 " got unknown event 0x%4.4x",
|
||||
event->display.display, event->display.event);
|
||||
break;
|
||||
}
|
||||
|
|
@ -1250,123 +1493,120 @@ SDLTest_PrintEvent(SDL_Event * event)
|
|||
case SDL_WINDOWEVENT:
|
||||
switch (event->window.event) {
|
||||
case SDL_WINDOWEVENT_SHOWN:
|
||||
SDL_Log("SDL EVENT: Window %d shown", event->window.windowID);
|
||||
SDL_Log("SDL EVENT: Window %" SDL_PRIu32 " shown", event->window.windowID);
|
||||
break;
|
||||
case SDL_WINDOWEVENT_HIDDEN:
|
||||
SDL_Log("SDL EVENT: Window %d hidden", event->window.windowID);
|
||||
SDL_Log("SDL EVENT: Window %" SDL_PRIu32 " hidden", event->window.windowID);
|
||||
break;
|
||||
case SDL_WINDOWEVENT_EXPOSED:
|
||||
SDL_Log("SDL EVENT: Window %d exposed", event->window.windowID);
|
||||
SDL_Log("SDL EVENT: Window %" SDL_PRIu32 " exposed", event->window.windowID);
|
||||
break;
|
||||
case SDL_WINDOWEVENT_MOVED:
|
||||
SDL_Log("SDL EVENT: Window %d moved to %d,%d",
|
||||
event->window.windowID, event->window.data1,
|
||||
event->window.data2);
|
||||
SDL_Log("SDL EVENT: Window %" SDL_PRIu32 " moved to %" SDL_PRIs32 ",%" SDL_PRIs32,
|
||||
event->window.windowID, event->window.data1, event->window.data2);
|
||||
break;
|
||||
case SDL_WINDOWEVENT_RESIZED:
|
||||
SDL_Log("SDL EVENT: Window %d resized to %dx%d",
|
||||
event->window.windowID, event->window.data1,
|
||||
event->window.data2);
|
||||
SDL_Log("SDL EVENT: Window %" SDL_PRIu32 " resized to %" SDL_PRIs32 "x%" SDL_PRIs32,
|
||||
event->window.windowID, event->window.data1, event->window.data2);
|
||||
break;
|
||||
case SDL_WINDOWEVENT_SIZE_CHANGED:
|
||||
SDL_Log("SDL EVENT: Window %d changed size to %dx%d",
|
||||
event->window.windowID, event->window.data1,
|
||||
event->window.data2);
|
||||
SDL_Log("SDL EVENT: Window %" SDL_PRIu32 " changed size to %" SDL_PRIs32 "x%" SDL_PRIs32,
|
||||
event->window.windowID, event->window.data1, event->window.data2);
|
||||
break;
|
||||
case SDL_WINDOWEVENT_MINIMIZED:
|
||||
SDL_Log("SDL EVENT: Window %d minimized", event->window.windowID);
|
||||
SDL_Log("SDL EVENT: Window %" SDL_PRIu32 " minimized", event->window.windowID);
|
||||
break;
|
||||
case SDL_WINDOWEVENT_MAXIMIZED:
|
||||
SDL_Log("SDL EVENT: Window %d maximized", event->window.windowID);
|
||||
SDL_Log("SDL EVENT: Window %" SDL_PRIu32 " maximized", event->window.windowID);
|
||||
break;
|
||||
case SDL_WINDOWEVENT_RESTORED:
|
||||
SDL_Log("SDL EVENT: Window %d restored", event->window.windowID);
|
||||
SDL_Log("SDL EVENT: Window %" SDL_PRIu32 " restored", event->window.windowID);
|
||||
break;
|
||||
case SDL_WINDOWEVENT_ENTER:
|
||||
SDL_Log("SDL EVENT: Mouse entered window %d",
|
||||
SDL_Log("SDL EVENT: Mouse entered window %" SDL_PRIu32 "",
|
||||
event->window.windowID);
|
||||
break;
|
||||
case SDL_WINDOWEVENT_LEAVE:
|
||||
SDL_Log("SDL EVENT: Mouse left window %d", event->window.windowID);
|
||||
SDL_Log("SDL EVENT: Mouse left window %" SDL_PRIu32 "", event->window.windowID);
|
||||
break;
|
||||
case SDL_WINDOWEVENT_FOCUS_GAINED:
|
||||
SDL_Log("SDL EVENT: Window %d gained keyboard focus",
|
||||
SDL_Log("SDL EVENT: Window %" SDL_PRIu32 " gained keyboard focus",
|
||||
event->window.windowID);
|
||||
break;
|
||||
case SDL_WINDOWEVENT_FOCUS_LOST:
|
||||
SDL_Log("SDL EVENT: Window %d lost keyboard focus",
|
||||
SDL_Log("SDL EVENT: Window %" SDL_PRIu32 " lost keyboard focus",
|
||||
event->window.windowID);
|
||||
break;
|
||||
case SDL_WINDOWEVENT_CLOSE:
|
||||
SDL_Log("SDL EVENT: Window %d closed", event->window.windowID);
|
||||
SDL_Log("SDL EVENT: Window %" SDL_PRIu32 " closed", event->window.windowID);
|
||||
break;
|
||||
case SDL_WINDOWEVENT_TAKE_FOCUS:
|
||||
SDL_Log("SDL EVENT: Window %d take focus", event->window.windowID);
|
||||
SDL_Log("SDL EVENT: Window %" SDL_PRIu32 " take focus", event->window.windowID);
|
||||
break;
|
||||
case SDL_WINDOWEVENT_HIT_TEST:
|
||||
SDL_Log("SDL EVENT: Window %d hit test", event->window.windowID);
|
||||
SDL_Log("SDL EVENT: Window %" SDL_PRIu32 " hit test", event->window.windowID);
|
||||
break;
|
||||
default:
|
||||
SDL_Log("SDL EVENT: Window %d got unknown event 0x%4.4x",
|
||||
SDL_Log("SDL EVENT: Window %" SDL_PRIu32 " got unknown event 0x%4.4x",
|
||||
event->window.windowID, event->window.event);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case SDL_KEYDOWN:
|
||||
SDL_Log("SDL EVENT: Keyboard: key pressed in window %d: scancode 0x%08X = %s, keycode 0x%08X = %s",
|
||||
SDL_Log("SDL EVENT: Keyboard: key pressed in window %" SDL_PRIu32 ": scancode 0x%08X = %s, keycode 0x%08" SDL_PRIX32 " = %s",
|
||||
event->key.windowID,
|
||||
event->key.keysym.scancode,
|
||||
SDL_GetScancodeName(event->key.keysym.scancode),
|
||||
event->key.keysym.sym, SDL_GetKeyName(event->key.keysym.sym));
|
||||
break;
|
||||
case SDL_KEYUP:
|
||||
SDL_Log("SDL EVENT: Keyboard: key released in window %d: scancode 0x%08X = %s, keycode 0x%08X = %s",
|
||||
SDL_Log("SDL EVENT: Keyboard: key released in window %" SDL_PRIu32 ": scancode 0x%08X = %s, keycode 0x%08" SDL_PRIX32 " = %s",
|
||||
event->key.windowID,
|
||||
event->key.keysym.scancode,
|
||||
SDL_GetScancodeName(event->key.keysym.scancode),
|
||||
event->key.keysym.sym, SDL_GetKeyName(event->key.keysym.sym));
|
||||
break;
|
||||
case SDL_TEXTEDITING:
|
||||
SDL_Log("SDL EVENT: Keyboard: text editing \"%s\" in window %d",
|
||||
SDL_Log("SDL EVENT: Keyboard: text editing \"%s\" in window %" SDL_PRIu32,
|
||||
event->edit.text, event->edit.windowID);
|
||||
break;
|
||||
case SDL_TEXTINPUT:
|
||||
SDL_Log("SDL EVENT: Keyboard: text input \"%s\" in window %d",
|
||||
SDL_Log("SDL EVENT: Keyboard: text input \"%s\" in window %" SDL_PRIu32,
|
||||
event->text.text, event->text.windowID);
|
||||
break;
|
||||
case SDL_KEYMAPCHANGED:
|
||||
SDL_Log("SDL EVENT: Keymap changed");
|
||||
break;
|
||||
case SDL_MOUSEMOTION:
|
||||
SDL_Log("SDL EVENT: Mouse: moved to %d,%d (%d,%d) in window %d",
|
||||
SDL_Log("SDL EVENT: Mouse: moved to %" SDL_PRIs32 ",%" SDL_PRIs32 " (%" SDL_PRIs32 ",%" SDL_PRIs32 ") in window %" SDL_PRIu32,
|
||||
event->motion.x, event->motion.y,
|
||||
event->motion.xrel, event->motion.yrel,
|
||||
event->motion.windowID);
|
||||
break;
|
||||
case SDL_MOUSEBUTTONDOWN:
|
||||
SDL_Log("SDL EVENT: Mouse: button %d pressed at %d,%d with click count %d in window %d",
|
||||
SDL_Log("SDL EVENT: Mouse: button %d pressed at %" SDL_PRIs32 ",%" SDL_PRIs32 " with click count %d in window %" SDL_PRIu32,
|
||||
event->button.button, event->button.x, event->button.y, event->button.clicks,
|
||||
event->button.windowID);
|
||||
break;
|
||||
case SDL_MOUSEBUTTONUP:
|
||||
SDL_Log("SDL EVENT: Mouse: button %d released at %d,%d with click count %d in window %d",
|
||||
SDL_Log("SDL EVENT: Mouse: button %d released at %" SDL_PRIs32 ",%" SDL_PRIs32 " with click count %d in window %" SDL_PRIu32,
|
||||
event->button.button, event->button.x, event->button.y, event->button.clicks,
|
||||
event->button.windowID);
|
||||
break;
|
||||
case SDL_MOUSEWHEEL:
|
||||
SDL_Log("SDL EVENT: Mouse: wheel scrolled %d in x and %d in y (reversed: %d) in window %d",
|
||||
SDL_Log("SDL EVENT: Mouse: wheel scrolled %" SDL_PRIs32 " in x and %" SDL_PRIs32 " in y (reversed: %" SDL_PRIu32 ") in window %" SDL_PRIu32,
|
||||
event->wheel.x, event->wheel.y, event->wheel.direction, event->wheel.windowID);
|
||||
break;
|
||||
case SDL_JOYDEVICEADDED:
|
||||
SDL_Log("SDL EVENT: Joystick index %d attached",
|
||||
SDL_Log("SDL EVENT: Joystick index %" SDL_PRIs32 " attached",
|
||||
event->jdevice.which);
|
||||
break;
|
||||
case SDL_JOYDEVICEREMOVED:
|
||||
SDL_Log("SDL EVENT: Joystick %d removed",
|
||||
SDL_Log("SDL EVENT: Joystick %" SDL_PRIs32 " removed",
|
||||
event->jdevice.which);
|
||||
break;
|
||||
case SDL_JOYBALLMOTION:
|
||||
SDL_Log("SDL EVENT: Joystick %d: ball %d moved by %d,%d",
|
||||
SDL_Log("SDL EVENT: Joystick %" SDL_PRIs32 ": ball %d moved by %d,%d",
|
||||
event->jball.which, event->jball.ball, event->jball.xrel,
|
||||
event->jball.yrel);
|
||||
break;
|
||||
|
|
@ -1402,40 +1642,40 @@ SDLTest_PrintEvent(SDL_Event * event)
|
|||
position = "LEFTUP";
|
||||
break;
|
||||
}
|
||||
SDL_Log("SDL EVENT: Joystick %d: hat %d moved to %s", event->jhat.which,
|
||||
event->jhat.hat, position);
|
||||
SDL_Log("SDL EVENT: Joystick %" SDL_PRIs32 ": hat %d moved to %s",
|
||||
event->jhat.which, event->jhat.hat, position);
|
||||
}
|
||||
break;
|
||||
case SDL_JOYBUTTONDOWN:
|
||||
SDL_Log("SDL EVENT: Joystick %d: button %d pressed",
|
||||
SDL_Log("SDL EVENT: Joystick %" SDL_PRIs32 ": button %d pressed",
|
||||
event->jbutton.which, event->jbutton.button);
|
||||
break;
|
||||
case SDL_JOYBUTTONUP:
|
||||
SDL_Log("SDL EVENT: Joystick %d: button %d released",
|
||||
SDL_Log("SDL EVENT: Joystick %" SDL_PRIs32 ": button %d released",
|
||||
event->jbutton.which, event->jbutton.button);
|
||||
break;
|
||||
case SDL_CONTROLLERDEVICEADDED:
|
||||
SDL_Log("SDL EVENT: Controller index %d attached",
|
||||
SDL_Log("SDL EVENT: Controller index %" SDL_PRIs32 " attached",
|
||||
event->cdevice.which);
|
||||
break;
|
||||
case SDL_CONTROLLERDEVICEREMOVED:
|
||||
SDL_Log("SDL EVENT: Controller %d removed",
|
||||
SDL_Log("SDL EVENT: Controller %" SDL_PRIs32 " removed",
|
||||
event->cdevice.which);
|
||||
break;
|
||||
case SDL_CONTROLLERAXISMOTION:
|
||||
SDL_Log("SDL EVENT: Controller %d axis %d ('%s') value: %d",
|
||||
SDL_Log("SDL EVENT: Controller %" SDL_PRIs32 " axis %d ('%s') value: %d",
|
||||
event->caxis.which,
|
||||
event->caxis.axis,
|
||||
ControllerAxisName((SDL_GameControllerAxis)event->caxis.axis),
|
||||
event->caxis.value);
|
||||
break;
|
||||
case SDL_CONTROLLERBUTTONDOWN:
|
||||
SDL_Log("SDL EVENT: Controller %d button %d ('%s') down",
|
||||
SDL_Log("SDL EVENT: Controller %" SDL_PRIs32 "button %d ('%s') down",
|
||||
event->cbutton.which, event->cbutton.button,
|
||||
ControllerButtonName((SDL_GameControllerButton)event->cbutton.button));
|
||||
break;
|
||||
case SDL_CONTROLLERBUTTONUP:
|
||||
SDL_Log("SDL EVENT: Controller %d button %d ('%s') up",
|
||||
SDL_Log("SDL EVENT: Controller %" SDL_PRIs32 " button %d ('%s') up",
|
||||
event->cbutton.which, event->cbutton.button,
|
||||
ControllerButtonName((SDL_GameControllerButton)event->cbutton.button));
|
||||
break;
|
||||
|
|
@ -1510,10 +1750,10 @@ SDLTest_PrintEvent(SDL_Event * event)
|
|||
SDL_Log("SDL EVENT: Quit requested");
|
||||
break;
|
||||
case SDL_USEREVENT:
|
||||
SDL_Log("SDL EVENT: User event %d", event->user.code);
|
||||
SDL_Log("SDL EVENT: User event %" SDL_PRIs32, event->user.code);
|
||||
break;
|
||||
default:
|
||||
SDL_Log("Unknown event 0x%4.4x", event->type);
|
||||
SDL_Log("Unknown event 0x%4.4" SDL_PRIu32, event->type);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
@ -1612,6 +1852,16 @@ SDLTest_CommonEvent(SDLTest_CommonState * state, SDL_Event * event, int *done)
|
|||
}
|
||||
}
|
||||
break;
|
||||
case SDL_WINDOWEVENT_FOCUS_LOST:
|
||||
if (state->flash_on_focus_loss) {
|
||||
SDL_Window *window = SDL_GetWindowFromID(event->window.windowID);
|
||||
if (window) {
|
||||
SDL_FlashWindow(window, SDL_FLASH_UNTIL_FOCUSED);
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case SDL_KEYDOWN: {
|
||||
|
|
@ -1686,7 +1936,7 @@ SDLTest_CommonEvent(SDLTest_CommonState * state, SDL_Event * event, int *done)
|
|||
const int delta = 100;
|
||||
int x, y;
|
||||
SDL_GetWindowPosition(window, &x, &y);
|
||||
|
||||
|
||||
if (event->key.keysym.sym == SDLK_UP) y -= delta;
|
||||
if (event->key.keysym.sym == SDLK_DOWN) y += delta;
|
||||
if (event->key.keysym.sym == SDLK_LEFT) x -= delta;
|
||||
|
|
@ -1719,7 +1969,7 @@ SDLTest_CommonEvent(SDLTest_CommonState * state, SDL_Event * event, int *done)
|
|||
if (withControl) {
|
||||
/* Ctrl-C copy awesome text! */
|
||||
SDL_SetClipboardText("SDL rocks!\nYou know it!");
|
||||
printf("Copied text to clipboard\n");
|
||||
SDL_Log("Copied text to clipboard\n");
|
||||
}
|
||||
if (withAlt) {
|
||||
/* Alt-C toggle a render clip rectangle */
|
||||
|
|
@ -1755,22 +2005,40 @@ SDLTest_CommonEvent(SDLTest_CommonState * state, SDL_Event * event, int *done)
|
|||
/* Ctrl-V paste awesome text! */
|
||||
char *text = SDL_GetClipboardText();
|
||||
if (*text) {
|
||||
printf("Clipboard: %s\n", text);
|
||||
SDL_Log("Clipboard: %s\n", text);
|
||||
} else {
|
||||
printf("Clipboard is empty\n");
|
||||
SDL_Log("Clipboard is empty\n");
|
||||
}
|
||||
SDL_free(text);
|
||||
}
|
||||
break;
|
||||
case SDLK_f:
|
||||
if (withControl) {
|
||||
/* Ctrl-F flash the window */
|
||||
SDL_Window *window = SDL_GetWindowFromID(event->key.windowID);
|
||||
if (window) {
|
||||
SDL_FlashWindow(window, SDL_FLASH_BRIEFLY);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case SDLK_g:
|
||||
if (withControl) {
|
||||
/* Ctrl-G toggle grab */
|
||||
/* Ctrl-G toggle mouse grab */
|
||||
SDL_Window *window = SDL_GetWindowFromID(event->key.windowID);
|
||||
if (window) {
|
||||
SDL_SetWindowGrab(window, !SDL_GetWindowGrab(window) ? SDL_TRUE : SDL_FALSE);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case SDLK_k:
|
||||
if (withControl) {
|
||||
/* Ctrl-K toggle keyboard grab */
|
||||
SDL_Window* window = SDL_GetWindowFromID(event->key.windowID);
|
||||
if (window) {
|
||||
SDL_SetWindowKeyboardGrab(window, !SDL_GetWindowKeyboardGrab(window) ? SDL_TRUE : SDL_FALSE);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case SDLK_m:
|
||||
if (withControl) {
|
||||
/* Ctrl-M maximize */
|
||||
|
|
@ -1791,6 +2059,20 @@ SDLTest_CommonEvent(SDLTest_CommonState * state, SDL_Event * event, int *done)
|
|||
SDL_SetRelativeMouseMode(!SDL_GetRelativeMouseMode() ? SDL_TRUE : SDL_FALSE);
|
||||
}
|
||||
break;
|
||||
case SDLK_t:
|
||||
if (withControl) {
|
||||
/* Ctrl-T toggle topmost mode */
|
||||
SDL_Window *window = SDL_GetWindowFromID(event->key.windowID);
|
||||
if (window) {
|
||||
Uint32 flags = SDL_GetWindowFlags(window);
|
||||
if (flags & SDL_WINDOW_ALWAYS_ON_TOP) {
|
||||
SDL_SetWindowAlwaysOnTop(window, SDL_FALSE);
|
||||
} else {
|
||||
SDL_SetWindowAlwaysOnTop(window, SDL_TRUE);
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case SDLK_z:
|
||||
if (withControl) {
|
||||
/* Ctrl-Z minimize */
|
||||
|
|
@ -1885,7 +2167,8 @@ SDLTest_CommonEvent(SDLTest_CommonState * state, SDL_Event * event, int *done)
|
|||
char message[256];
|
||||
SDL_Window *window = SDL_GetWindowFromID(event->key.windowID);
|
||||
|
||||
SDL_snprintf(message, sizeof(message), "(%i, %i), rel (%i, %i)\n", lastEvent.x, lastEvent.y, lastEvent.xrel, lastEvent.yrel);
|
||||
SDL_snprintf(message, sizeof(message), "(%" SDL_PRIs32 ", %" SDL_PRIs32 "), rel (%" SDL_PRIs32 ", %" SDL_PRIs32 ")\n",
|
||||
lastEvent.x, lastEvent.y, lastEvent.xrel, lastEvent.yrel);
|
||||
SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_INFORMATION, "Last mouse position", message, window);
|
||||
break;
|
||||
}
|
||||
|
|
@ -1948,4 +2231,172 @@ SDLTest_CommonQuit(SDLTest_CommonState * state)
|
|||
SDLTest_LogAllocations();
|
||||
}
|
||||
|
||||
void
|
||||
SDLTest_CommonDrawWindowInfo(SDL_Renderer * renderer, SDL_Window * window, int * usedHeight)
|
||||
{
|
||||
char text[1024];
|
||||
int textY = 0;
|
||||
const int lineHeight = 10;
|
||||
int x, y, w, h;
|
||||
SDL_Rect rect;
|
||||
SDL_DisplayMode mode;
|
||||
float ddpi, hdpi, vdpi;
|
||||
float scaleX, scaleY;
|
||||
Uint32 flags;
|
||||
const int windowDisplayIndex = SDL_GetWindowDisplayIndex(window);
|
||||
SDL_RendererInfo info;
|
||||
|
||||
/* Video */
|
||||
|
||||
SDL_SetRenderDrawColor(renderer, 255, 255, 255, 255);
|
||||
SDLTest_DrawString(renderer, 0, textY, "-- Video --");
|
||||
textY += lineHeight;
|
||||
|
||||
SDL_SetRenderDrawColor(renderer, 170, 170, 170, 255);
|
||||
|
||||
SDL_snprintf(text, sizeof(text), "SDL_GetCurrentVideoDriver: %s", SDL_GetCurrentVideoDriver());
|
||||
SDLTest_DrawString(renderer, 0, textY, text);
|
||||
textY += lineHeight;
|
||||
|
||||
/* Renderer */
|
||||
|
||||
SDL_SetRenderDrawColor(renderer, 255, 255, 255, 255);
|
||||
SDLTest_DrawString(renderer, 0, textY, "-- Renderer --");
|
||||
textY += lineHeight;
|
||||
|
||||
SDL_SetRenderDrawColor(renderer, 170, 170, 170, 255);
|
||||
|
||||
if (0 == SDL_GetRendererInfo(renderer, &info)) {
|
||||
SDL_snprintf(text, sizeof(text), "SDL_GetRendererInfo: name: %s", info.name);
|
||||
SDLTest_DrawString(renderer, 0, textY, text);
|
||||
textY += lineHeight;
|
||||
}
|
||||
|
||||
if (0 == SDL_GetRendererOutputSize(renderer, &w, &h)) {
|
||||
SDL_snprintf(text, sizeof(text), "SDL_GetRendererOutputSize: %dx%d", w, h);
|
||||
SDLTest_DrawString(renderer, 0, textY, text);
|
||||
textY += lineHeight;
|
||||
}
|
||||
|
||||
SDL_RenderGetViewport(renderer, &rect);
|
||||
SDL_snprintf(text, sizeof(text), "SDL_RenderGetViewport: %d,%d, %dx%d",
|
||||
rect.x, rect.y, rect.w, rect.h);
|
||||
SDLTest_DrawString(renderer, 0, textY, text);
|
||||
textY += lineHeight;
|
||||
|
||||
SDL_RenderGetScale(renderer, &scaleX, &scaleY);
|
||||
SDL_snprintf(text, sizeof(text), "SDL_RenderGetScale: %f,%f",
|
||||
scaleX, scaleY);
|
||||
SDLTest_DrawString(renderer, 0, textY, text);
|
||||
textY += lineHeight;
|
||||
|
||||
SDL_RenderGetLogicalSize(renderer, &w, &h);
|
||||
SDL_snprintf(text, sizeof(text), "SDL_RenderGetLogicalSize: %dx%d", w, h);
|
||||
SDLTest_DrawString(renderer, 0, textY, text);
|
||||
textY += lineHeight;
|
||||
|
||||
/* Window */
|
||||
|
||||
SDL_SetRenderDrawColor(renderer, 255, 255, 255, 255);
|
||||
SDLTest_DrawString(renderer, 0, textY, "-- Window --");
|
||||
textY += lineHeight;
|
||||
|
||||
SDL_SetRenderDrawColor(renderer, 170, 170, 170, 255);
|
||||
|
||||
SDL_GetWindowPosition(window, &x, &y);
|
||||
SDL_snprintf(text, sizeof(text), "SDL_GetWindowPosition: %d,%d", x, y);
|
||||
SDLTest_DrawString(renderer, 0, textY, text);
|
||||
textY += lineHeight;
|
||||
|
||||
SDL_GetWindowSize(window, &w, &h);
|
||||
SDL_snprintf(text, sizeof(text), "SDL_GetWindowSize: %dx%d", w, h);
|
||||
SDLTest_DrawString(renderer, 0, textY, text);
|
||||
textY += lineHeight;
|
||||
|
||||
SDL_snprintf(text, sizeof(text), "SDL_GetWindowFlags: ");
|
||||
SDLTest_PrintWindowFlags(text, sizeof(text), SDL_GetWindowFlags(window));
|
||||
SDLTest_DrawString(renderer, 0, textY, text);
|
||||
textY += lineHeight;
|
||||
|
||||
if (0 == SDL_GetWindowDisplayMode(window, &mode)) {
|
||||
SDL_snprintf(text, sizeof(text), "SDL_GetWindowDisplayMode: %dx%d@%dHz (%s)",
|
||||
mode.w, mode.h, mode.refresh_rate, SDL_GetPixelFormatName(mode.format));
|
||||
SDLTest_DrawString(renderer, 0, textY, text);
|
||||
textY += lineHeight;
|
||||
}
|
||||
|
||||
/* Display */
|
||||
|
||||
SDL_SetRenderDrawColor(renderer, 255, 255, 255, 255);
|
||||
SDLTest_DrawString(renderer, 0, textY, "-- Display --");
|
||||
textY += lineHeight;
|
||||
|
||||
SDL_SetRenderDrawColor(renderer, 170, 170, 170, 255);
|
||||
|
||||
SDL_snprintf(text, sizeof(text), "SDL_GetWindowDisplayIndex: %d", windowDisplayIndex);
|
||||
SDLTest_DrawString(renderer, 0, textY, text);
|
||||
textY += lineHeight;
|
||||
|
||||
SDL_snprintf(text, sizeof(text), "SDL_GetDisplayName: %s", SDL_GetDisplayName(windowDisplayIndex));
|
||||
SDLTest_DrawString(renderer, 0, textY, text);
|
||||
textY += lineHeight;
|
||||
|
||||
if (0 == SDL_GetDisplayBounds(windowDisplayIndex, &rect)) {
|
||||
SDL_snprintf(text, sizeof(text), "SDL_GetDisplayBounds: %d,%d, %dx%d",
|
||||
rect.x, rect.y, rect.w, rect.h);
|
||||
SDLTest_DrawString(renderer, 0, textY, text);
|
||||
textY += lineHeight;
|
||||
}
|
||||
|
||||
if (0 == SDL_GetCurrentDisplayMode(windowDisplayIndex, &mode)) {
|
||||
SDL_snprintf(text, sizeof(text), "SDL_GetCurrentDisplayMode: %dx%d@%d",
|
||||
mode.w, mode.h, mode.refresh_rate);
|
||||
SDLTest_DrawString(renderer, 0, textY, text);
|
||||
textY += lineHeight;
|
||||
}
|
||||
|
||||
if (0 == SDL_GetDesktopDisplayMode(windowDisplayIndex, &mode)) {
|
||||
SDL_snprintf(text, sizeof(text), "SDL_GetDesktopDisplayMode: %dx%d@%d",
|
||||
mode.w, mode.h, mode.refresh_rate);
|
||||
SDLTest_DrawString(renderer, 0, textY, text);
|
||||
textY += lineHeight;
|
||||
}
|
||||
|
||||
if (0 == SDL_GetDisplayDPI(windowDisplayIndex, &ddpi, &hdpi, &vdpi)) {
|
||||
SDL_snprintf(text, sizeof(text), "SDL_GetDisplayDPI: ddpi: %f, hdpi: %f, vdpi: %f",
|
||||
ddpi, hdpi, vdpi);
|
||||
SDLTest_DrawString(renderer, 0, textY, text);
|
||||
textY += lineHeight;
|
||||
}
|
||||
|
||||
SDL_snprintf(text, sizeof(text), "SDL_GetDisplayOrientation: ");
|
||||
SDLTest_PrintDisplayOrientation(text, sizeof(text), SDL_GetDisplayOrientation(windowDisplayIndex));
|
||||
SDLTest_DrawString(renderer, 0, textY, text);
|
||||
textY += lineHeight;
|
||||
|
||||
/* Mouse */
|
||||
|
||||
SDL_SetRenderDrawColor(renderer, 255, 255, 255, 255);
|
||||
SDLTest_DrawString(renderer, 0, textY, "-- Mouse --");
|
||||
textY += lineHeight;
|
||||
|
||||
SDL_SetRenderDrawColor(renderer, 170, 170, 170, 255);
|
||||
|
||||
flags = SDL_GetMouseState(&x, &y);
|
||||
SDL_snprintf(text, sizeof(text), "SDL_GetMouseState: %d,%d ", x, y);
|
||||
SDLTest_PrintButtonMask(text, sizeof(text), flags);
|
||||
SDLTest_DrawString(renderer, 0, textY, text);
|
||||
textY += lineHeight;
|
||||
|
||||
flags = SDL_GetGlobalMouseState(&x, &y);
|
||||
SDL_snprintf(text, sizeof(text), "SDL_GetGlobalMouseState: %d,%d ", x, y);
|
||||
SDLTest_PrintButtonMask(text, sizeof(text), flags);
|
||||
SDLTest_DrawString(renderer, 0, textY, text);
|
||||
textY += lineHeight;
|
||||
|
||||
if (usedHeight) {
|
||||
*usedHeight = textY;
|
||||
}
|
||||
}
|
||||
|
||||
/* vi: set ts=4 sw=4 expandtab: */
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
Simple DirectMedia Layer
|
||||
Copyright (C) 1997-2020 Sam Lantinga <slouken@libsdl.org>
|
||||
Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
Simple DirectMedia Layer
|
||||
Copyright (C) 1997-2020 Sam Lantinga <slouken@libsdl.org>
|
||||
Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
Simple DirectMedia Layer
|
||||
Copyright (C) 1997-2020 Sam Lantinga <slouken@libsdl.org>
|
||||
Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
|
|
@ -3109,10 +3109,16 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = {
|
|||
|
||||
/* ---- Character */
|
||||
|
||||
struct SDLTest_CharTextureCache {
|
||||
SDL_Renderer* renderer;
|
||||
SDL_Texture* charTextureCache[256];
|
||||
struct SDLTest_CharTextureCache* next;
|
||||
};
|
||||
|
||||
/*!
|
||||
\brief Global cache for 8x8 pixel font textures created at runtime.
|
||||
\brief List of per-renderer caches for 8x8 pixel font textures created at runtime.
|
||||
*/
|
||||
static SDL_Texture *SDLTest_CharTextureCache[256];
|
||||
static struct SDLTest_CharTextureCache *SDLTest_CharTextureCacheList;
|
||||
|
||||
int SDLTest_DrawCharacter(SDL_Renderer *renderer, int x, int y, char c)
|
||||
{
|
||||
|
|
@ -3131,6 +3137,7 @@ int SDLTest_DrawCharacter(SDL_Renderer *renderer, int x, int y, char c)
|
|||
SDL_Surface *character;
|
||||
Uint32 ci;
|
||||
Uint8 r, g, b, a;
|
||||
struct SDLTest_CharTextureCache *cache;
|
||||
|
||||
/*
|
||||
* Setup source rectangle
|
||||
|
|
@ -3151,10 +3158,25 @@ int SDLTest_DrawCharacter(SDL_Renderer *renderer, int x, int y, char c)
|
|||
/* Character index in cache */
|
||||
ci = (unsigned char)c;
|
||||
|
||||
/* Search for this renderer's cache */
|
||||
for (cache = SDLTest_CharTextureCacheList; cache != NULL; cache = cache->next) {
|
||||
if (cache->renderer == renderer) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/* Allocate a new cache for this renderer if needed */
|
||||
if (cache == NULL) {
|
||||
cache = (struct SDLTest_CharTextureCache*)SDL_calloc(1, sizeof(struct SDLTest_CharTextureCache));
|
||||
cache->renderer = renderer;
|
||||
cache->next = SDLTest_CharTextureCacheList;
|
||||
SDLTest_CharTextureCacheList = cache;
|
||||
}
|
||||
|
||||
/*
|
||||
* Create new charWidth x charHeight bitmap surface if not already present.
|
||||
*/
|
||||
if (SDLTest_CharTextureCache[ci] == NULL) {
|
||||
if (cache->charTextureCache[ci] == NULL) {
|
||||
/*
|
||||
* Redraw character into surface
|
||||
*/
|
||||
|
|
@ -3191,14 +3213,15 @@ int SDLTest_DrawCharacter(SDL_Renderer *renderer, int x, int y, char c)
|
|||
linepos += pitch;
|
||||
}
|
||||
|
||||
|
||||
/* Convert temp surface into texture */
|
||||
SDLTest_CharTextureCache[ci] = SDL_CreateTextureFromSurface(renderer, character);
|
||||
cache->charTextureCache[ci] = SDL_CreateTextureFromSurface(renderer, character);
|
||||
SDL_FreeSurface(character);
|
||||
|
||||
/*
|
||||
* Check pointer
|
||||
*/
|
||||
if (SDLTest_CharTextureCache[ci] == NULL) {
|
||||
if (cache->charTextureCache[ci] == NULL) {
|
||||
return (-1);
|
||||
}
|
||||
}
|
||||
|
|
@ -3208,13 +3231,13 @@ int SDLTest_DrawCharacter(SDL_Renderer *renderer, int x, int y, char c)
|
|||
*/
|
||||
result = 0;
|
||||
result |= SDL_GetRenderDrawColor(renderer, &r, &g, &b, &a);
|
||||
result |= SDL_SetTextureColorMod(SDLTest_CharTextureCache[ci], r, g, b);
|
||||
result |= SDL_SetTextureAlphaMod(SDLTest_CharTextureCache[ci], a);
|
||||
result |= SDL_SetTextureColorMod(cache->charTextureCache[ci], r, g, b);
|
||||
result |= SDL_SetTextureAlphaMod(cache->charTextureCache[ci], a);
|
||||
|
||||
/*
|
||||
* Draw texture onto destination
|
||||
*/
|
||||
result |= SDL_RenderCopy(renderer, SDLTest_CharTextureCache[ci], &srect, &drect);
|
||||
result |= SDL_RenderCopy(renderer, cache->charTextureCache[ci], &srect, &drect);
|
||||
|
||||
return (result);
|
||||
}
|
||||
|
|
@ -3239,12 +3262,23 @@ int SDLTest_DrawString(SDL_Renderer * renderer, int x, int y, const char *s)
|
|||
void SDLTest_CleanupTextDrawing(void)
|
||||
{
|
||||
unsigned int i;
|
||||
for (i = 0; i < SDL_arraysize(SDLTest_CharTextureCache); ++i) {
|
||||
if (SDLTest_CharTextureCache[i]) {
|
||||
SDL_DestroyTexture(SDLTest_CharTextureCache[i]);
|
||||
SDLTest_CharTextureCache[i] = NULL;
|
||||
struct SDLTest_CharTextureCache* cache, *next;
|
||||
|
||||
cache = SDLTest_CharTextureCacheList;
|
||||
do {
|
||||
for (i = 0; i < SDL_arraysize(cache->charTextureCache); ++i) {
|
||||
if (cache->charTextureCache[i]) {
|
||||
SDL_DestroyTexture(cache->charTextureCache[i]);
|
||||
cache->charTextureCache[i] = NULL;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
next = cache->next;
|
||||
SDL_free(cache);
|
||||
cache = next;
|
||||
} while (cache);
|
||||
|
||||
SDLTest_CharTextureCacheList = NULL;
|
||||
}
|
||||
|
||||
/* vi: set ts=4 sw=4 expandtab: */
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
Simple DirectMedia Layer
|
||||
Copyright (C) 1997-2020 Sam Lantinga <slouken@libsdl.org>
|
||||
Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
Simple DirectMedia Layer
|
||||
Copyright (C) 1997-2020 Sam Lantinga <slouken@libsdl.org>
|
||||
Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
|
|
@ -98,7 +98,7 @@ SDLTest_GenerateRunSeed(const int length)
|
|||
*
|
||||
*/
|
||||
static Uint64
|
||||
SDLTest_GenerateExecKey(const char *runSeed, char *suiteName, char *testName, int iteration)
|
||||
SDLTest_GenerateExecKey(const char *runSeed, const char *suiteName, const char *testName, int iteration)
|
||||
{
|
||||
SDLTest_Md5Context md5Context;
|
||||
Uint64 *keys;
|
||||
|
|
@ -240,7 +240,7 @@ SDLTest_RunTest(SDLTest_TestSuiteReference *testSuite, const SDLTest_TestCaseRef
|
|||
return TEST_RESULT_SETUP_FAILURE;
|
||||
}
|
||||
|
||||
if (!testCase->enabled && forceTestRun == SDL_FALSE)
|
||||
if (!testCase->enabled && forceTestRun == SDL_FALSE)
|
||||
{
|
||||
SDLTest_Log(SDLTEST_FINAL_RESULT_FORMAT, "Test", testCase->name, "Skipped (Disabled)");
|
||||
return TEST_RESULT_SKIPPED;
|
||||
|
|
@ -316,7 +316,7 @@ SDLTest_RunTest(SDLTest_TestSuiteReference *testSuite, const SDLTest_TestCaseRef
|
|||
}
|
||||
|
||||
/* Prints summary of all suites/tests contained in the given reference */
|
||||
#if 0
|
||||
#if 0
|
||||
static void SDLTest_LogTestSuiteSummary(SDLTest_TestSuiteReference *testSuites)
|
||||
{
|
||||
int suiteCounter;
|
||||
|
|
@ -377,8 +377,8 @@ int SDLTest_RunSuites(SDLTest_TestSuiteReference *testSuites[], const char *user
|
|||
SDLTest_TestSuiteReference *testSuite;
|
||||
const SDLTest_TestCaseReference *testCase;
|
||||
const char *runSeed = NULL;
|
||||
char *currentSuiteName;
|
||||
char *currentTestName;
|
||||
const char *currentSuiteName;
|
||||
const char *currentTestName;
|
||||
Uint64 execKey;
|
||||
float runStartSeconds;
|
||||
float suiteStartSeconds;
|
||||
|
|
@ -388,10 +388,10 @@ int SDLTest_RunSuites(SDLTest_TestSuiteReference *testSuites[], const char *user
|
|||
float testEndSeconds;
|
||||
float runtime;
|
||||
int suiteFilter = 0;
|
||||
char *suiteFilterName = NULL;
|
||||
const char *suiteFilterName = NULL;
|
||||
int testFilter = 0;
|
||||
char *testFilterName = NULL;
|
||||
SDL_bool forceTestRun = SDL_FALSE;
|
||||
const char *testFilterName = NULL;
|
||||
SDL_bool forceTestRun = SDL_FALSE;
|
||||
int testResult = 0;
|
||||
int runResult = 0;
|
||||
int totalTestFailedCount = 0;
|
||||
|
|
@ -419,7 +419,6 @@ int SDLTest_RunSuites(SDLTest_TestSuiteReference *testSuites[], const char *user
|
|||
runSeed = userRunSeed;
|
||||
}
|
||||
|
||||
|
||||
/* Reset per-run counters */
|
||||
totalTestFailedCount = 0;
|
||||
totalTestPassedCount = 0;
|
||||
|
|
@ -431,7 +430,7 @@ int SDLTest_RunSuites(SDLTest_TestSuiteReference *testSuites[], const char *user
|
|||
/* Log run with fuzzer parameters */
|
||||
SDLTest_Log("::::: Test Run /w seed '%s' started\n", runSeed);
|
||||
|
||||
/* Count the total number of tests */
|
||||
/* Count the total number of tests */
|
||||
suiteCounter = 0;
|
||||
while (testSuites[suiteCounter]) {
|
||||
testSuite = testSuites[suiteCounter];
|
||||
|
|
@ -440,17 +439,17 @@ int SDLTest_RunSuites(SDLTest_TestSuiteReference *testSuites[], const char *user
|
|||
while (testSuite->testCases[testCounter])
|
||||
{
|
||||
testCounter++;
|
||||
totalNumberOfTests++;
|
||||
}
|
||||
}
|
||||
totalNumberOfTests++;
|
||||
}
|
||||
}
|
||||
|
||||
/* Pre-allocate an array for tracking failed tests (potentially all test cases) */
|
||||
failedTests = (const SDLTest_TestCaseReference **)SDL_malloc(totalNumberOfTests * sizeof(SDLTest_TestCaseReference *));
|
||||
if (failedTests == NULL) {
|
||||
SDLTest_LogError("Unable to allocate cache for failed tests");
|
||||
SDL_Error(SDL_ENOMEM);
|
||||
/* Pre-allocate an array for tracking failed tests (potentially all test cases) */
|
||||
failedTests = (const SDLTest_TestCaseReference **)SDL_malloc(totalNumberOfTests * sizeof(SDLTest_TestCaseReference *));
|
||||
if (failedTests == NULL) {
|
||||
SDLTest_LogError("Unable to allocate cache for failed tests");
|
||||
SDL_Error(SDL_ENOMEM);
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
/* Initialize filtering */
|
||||
if (filter != NULL && filter[0] != '\0') {
|
||||
|
|
@ -542,7 +541,7 @@ int SDLTest_RunSuites(SDLTest_TestSuiteReference *testSuites[], const char *user
|
|||
/* Override 'disabled' flag if we specified a test filter (i.e. force run for debugging) */
|
||||
if (testFilter == 1 && !testCase->enabled) {
|
||||
SDLTest_Log("Force run of disabled test since test filter was set");
|
||||
forceTestRun = SDL_TRUE;
|
||||
forceTestRun = SDL_TRUE;
|
||||
}
|
||||
|
||||
/* Take time - test start */
|
||||
|
|
@ -571,7 +570,7 @@ int SDLTest_RunSuites(SDLTest_TestSuiteReference *testSuites[], const char *user
|
|||
}
|
||||
|
||||
SDLTest_Log("Test Iteration %i: execKey %" SDL_PRIu64, iterationCounter, execKey);
|
||||
testResult = SDLTest_RunTest(testSuite, testCase, execKey, forceTestRun);
|
||||
testResult = SDLTest_RunTest(testSuite, testCase, execKey, forceTestRun);
|
||||
|
||||
if (testResult == TEST_RESULT_PASSED) {
|
||||
testPassedCount++;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
Simple DirectMedia Layer
|
||||
Copyright (C) 1997-2020 Sam Lantinga <slouken@libsdl.org>
|
||||
Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
Simple DirectMedia Layer
|
||||
Copyright (C) 1997-2020 Sam Lantinga <slouken@libsdl.org>
|
||||
Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
Simple DirectMedia Layer
|
||||
Copyright (C) 1997-2020 Sam Lantinga <slouken@libsdl.org>
|
||||
Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
Simple DirectMedia Layer
|
||||
Copyright (C) 1997-2020 Sam Lantinga <slouken@libsdl.org>
|
||||
Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
Simple DirectMedia Layer
|
||||
Copyright (C) 1997-2020 Sam Lantinga <slouken@libsdl.org>
|
||||
Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
Simple DirectMedia Layer
|
||||
Copyright (C) 1997-2020 Sam Lantinga <slouken@libsdl.org>
|
||||
Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
Simple DirectMedia Layer
|
||||
Copyright (C) 1997-2020 Sam Lantinga <slouken@libsdl.org>
|
||||
Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
Simple DirectMedia Layer
|
||||
Copyright (C) 1997-2020 Sam Lantinga <slouken@libsdl.org>
|
||||
Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
|
|
@ -26,6 +26,7 @@
|
|||
#include "SDL_test_memory.h"
|
||||
|
||||
#ifdef HAVE_LIBUNWIND_H
|
||||
#define UNW_LOCAL_ONLY
|
||||
#include <libunwind.h>
|
||||
#endif
|
||||
|
||||
|
|
@ -103,13 +104,13 @@ static void SDL_TrackAllocation(void *mem, size_t size)
|
|||
stack_index = 0;
|
||||
while (unw_step(&cursor) > 0) {
|
||||
unw_word_t offset, pc;
|
||||
char sym[256];
|
||||
char sym[236];
|
||||
|
||||
unw_get_reg(&cursor, UNW_REG_IP, &pc);
|
||||
entry->stack[stack_index] = pc;
|
||||
|
||||
if (unw_get_proc_name(&cursor, sym, sizeof(sym), &offset) == 0) {
|
||||
snprintf(entry->stack_names[stack_index], sizeof(entry->stack_names[stack_index]), "%s+0x%llx", sym, (unsigned long long)offset);
|
||||
SDL_snprintf(entry->stack_names[stack_index], sizeof(entry->stack_names[stack_index]), "%s+0x%llx", sym, (unsigned long long)offset);
|
||||
}
|
||||
++stack_index;
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
Simple DirectMedia Layer
|
||||
Copyright (C) 1997-2020 Sam Lantinga <slouken@libsdl.org>
|
||||
Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
|
|
@ -83,7 +83,8 @@ unsigned int SDLTest_Random(SDLTest_RandomContext * rndContext)
|
|||
|
||||
if (rndContext==NULL) return -1;
|
||||
|
||||
xh = rndContext->x >> 16, xl = rndContext->x & 65535;
|
||||
xh = rndContext->x >> 16;
|
||||
xl = rndContext->x & 65535;
|
||||
rndContext->x = rndContext->x * rndContext->a + rndContext->c;
|
||||
rndContext->c =
|
||||
xh * rndContext->ah + ((xh * rndContext->al) >> 16) +
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue