update SDL3 to 3.2.6.

This commit is contained in:
Sasha Szpakowski
2025-03-02 14:42:35 -04:00
parent 3582488fbc
commit 30709de450
407 changed files with 20390 additions and 5388 deletions
+46 -3
View File
@@ -334,6 +334,9 @@ static bool SDL_CreateWindowTexture(SDL_VideoDevice *_this, SDL_Window *window,
if (!render_driver) {
render_driver = SDL_GetHint(SDL_HINT_RENDER_DRIVER);
}
if (render_driver && SDL_strcasecmp(render_driver, SDL_SOFTWARE_RENDERER) == 0) {
render_driver = NULL;
}
char *render_driver_copy = NULL;
if (render_driver && *render_driver) {
@@ -593,6 +596,7 @@ const char *SDL_GetVideoDriver(int index)
if (index >= 0 && index < SDL_GetNumVideoDrivers()) {
return deduped_bootstrap[index]->name;
}
SDL_InvalidParamError("index");
return NULL;
}
@@ -651,7 +655,8 @@ bool SDL_VideoInit(const char *driver_name)
: SDL_strlen(driver_attempt);
for (i = 0; bootstrap[i]; ++i) {
if ((driver_attempt_len == SDL_strlen(bootstrap[i]->name)) &&
if (!bootstrap[i]->is_preferred &&
(driver_attempt_len == SDL_strlen(bootstrap[i]->name)) &&
(SDL_strncasecmp(bootstrap[i]->name, driver_attempt, driver_attempt_len) == 0)) {
video = bootstrap[i]->create();
if (video) {
@@ -2151,7 +2156,7 @@ void SDL_ToggleDragAndDropSupport(void)
}
}
SDL_Window **SDLCALL SDL_GetWindows(int *count)
SDL_Window ** SDLCALL SDL_GetWindows(int *count)
{
if (count) {
*count = 0;
@@ -2762,9 +2767,16 @@ bool SDL_SetWindowTitle(SDL_Window *window, const char *title)
if (title == window->title) {
return true;
}
if (!title) {
title = "";
}
if (window->title && SDL_strcmp(title, window->title) == 0) {
return true;
}
SDL_free(window->title);
window->title = SDL_strdup(title ? title : "");
window->title = SDL_strdup(title);
if (_this->SetWindowTitle) {
_this->SetWindowTitle(_this, window);
@@ -4129,6 +4141,31 @@ SDL_Window *SDL_GetToplevelForKeyboardFocus(void)
return focus;
}
bool SDL_AddWindowRenderer(SDL_Window *window, SDL_Renderer *renderer)
{
SDL_Renderer **renderers = (SDL_Renderer **)SDL_realloc(window->renderers, (window->num_renderers + 1) * sizeof(*renderers));
if (!renderers) {
return false;
}
window->renderers = renderers;
window->renderers[window->num_renderers++] = renderer;
return true;
}
void SDL_RemoveWindowRenderer(SDL_Window *window, SDL_Renderer *renderer)
{
for (int i = 0; i < window->num_renderers; ++i) {
if (window->renderers[i] == renderer) {
if (i < (window->num_renderers - 1)) {
SDL_memmove(&window->renderers[i], &window->renderers[i + 1], (window->num_renderers - i - 1) * sizeof(window->renderers[i]));
}
--window->num_renderers;
break;
}
}
}
void SDL_DestroyWindow(SDL_Window *window)
{
CHECK_WINDOW_MAGIC(window,);
@@ -4235,6 +4272,7 @@ void SDL_DestroyWindow(SDL_Window *window)
_this->windows = window->next;
}
SDL_free(window->renderers);
SDL_free(window);
#ifdef SDL_VIDEO_DRIVER_UIKIT
@@ -4291,7 +4329,9 @@ void SDL_VideoQuit(void)
}
// Halt event processing before doing anything else
#if 0 // This was moved to the end to fix a memory leak
SDL_QuitPen();
#endif
SDL_QuitTouch();
SDL_QuitMouse();
SDL_QuitKeyboard();
@@ -4322,6 +4362,9 @@ void SDL_VideoQuit(void)
}
_this->free(_this);
_this = NULL;
// This needs to happen after the video subsystem has removed pen data
SDL_QuitPen();
}
bool SDL_GL_LoadLibrary(const char *path)