From 934d6954e21a816c1b28f8499e5b7d976cecd2b8 Mon Sep 17 00:00:00 2001 From: Deve Date: Mon, 27 Jan 2025 22:52:32 +0100 Subject: [PATCH] Fixed crash when trying to disconnect secondary display on iOS --- src/video/SDL_video.c | 2 ++ src/video/uikit/SDL_uikitmodes.m | 1 + 2 files changed, 3 insertions(+) diff --git a/src/video/SDL_video.c b/src/video/SDL_video.c index c0620967dc..01023753c6 100644 --- a/src/video/SDL_video.c +++ b/src/video/SDL_video.c @@ -695,7 +695,9 @@ void SDL_DelVideoDisplay(int index) SDL_SendDisplayEvent(&_this->displays[index], SDL_DISPLAYEVENT_DISCONNECTED, 0); SDL_free(_this->displays[index].driverdata); + _this->displays[index].driverdata = NULL; SDL_free(_this->displays[index].name); + _this->displays[index].name = NULL; if (index < (_this->num_displays - 1)) { SDL_memmove(&_this->displays[index], &_this->displays[index + 1], (_this->num_displays - index - 1) * sizeof(_this->displays[index])); } diff --git a/src/video/uikit/SDL_uikitmodes.m b/src/video/uikit/SDL_uikitmodes.m index 1b1b4de20b..97c59c250a 100644 --- a/src/video/uikit/SDL_uikitmodes.m +++ b/src/video/uikit/SDL_uikitmodes.m @@ -344,6 +344,7 @@ void UIKit_DelDisplay(UIScreen *uiscreen) if (data && data.uiscreen == uiscreen) { CFRelease(SDL_GetDisplayDriverData(i)); + SDL_GetDisplay(i)->driverdata = NULL; SDL_DelVideoDisplay(i); return; }