Fixed crash when setting the default cursor twice

This happens in the KMSDRM driver, once after video init, setting a blank default cursor, and once when creating a window when the KMSDRM mouse is initialized.

Also fixed a memory leak freeing the default cursor at shutdown
main
Sam Lantinga 2023-08-10 12:13:40 -07:00
parent 8e99a4f4f5
commit 9129e1d557
1 changed files with 8 additions and 4 deletions

View File

@ -234,7 +234,11 @@ void SDL_SetDefaultCursor(SDL_Cursor *cursor)
if (mouse->def_cursor) {
SDL_Cursor *default_cursor = mouse->def_cursor;
if (mouse->cur_cursor == mouse->def_cursor) {
mouse->cur_cursor = NULL;
}
mouse->def_cursor = NULL;
SDL_DestroyCursor(default_cursor);
}
@ -865,6 +869,10 @@ void SDL_QuitMouse(void)
SDL_SetRelativeMouseMode(SDL_FALSE);
SDL_ShowCursor();
if (mouse->def_cursor) {
SDL_SetDefaultCursor(NULL);
}
cursor = mouse->cursors;
while (cursor) {
next = cursor->next;
@ -874,10 +882,6 @@ void SDL_QuitMouse(void)
mouse->cursors = NULL;
mouse->cur_cursor = NULL;
if (mouse->def_cursor) {
SDL_SetDefaultCursor(NULL);
}
if (mouse->sources) {
SDL_free(mouse->sources);
mouse->sources = NULL;