From 934d6954e21a816c1b28f8499e5b7d976cecd2b8 Mon Sep 17 00:00:00 2001
From: Deve <[EMAIL REDACTED]>
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 c0620967dcdf5..01023753c6e49 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 1b1b4de20b33c..97c59c250a16a 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;
}