mirror of
https://github.com/love2d/megasource.git
synced 2026-08-20 20:50:52 +02:00
update SDL3 to 3.2.6.
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user