From 85e6500065bbe37e9131c0ff9cd7e5af6d256730 Mon Sep 17 00:00:00 2001
From: Sylvain <[EMAIL REDACTED]>
Date: Fri, 11 Feb 2022 11:08:08 +0100
Subject: [PATCH] X11 Segmentation fault with multiple windows and renderers
(see #5256)
---
src/video/x11/SDL_x11window.c | 16 ++++++++++++++--
1 file changed, 14 insertions(+), 2 deletions(-)
diff --git a/src/video/x11/SDL_x11window.c b/src/video/x11/SDL_x11window.c
index 709f813eeb1..a6bd91d72ad 100644
--- a/src/video/x11/SDL_x11window.c
+++ b/src/video/x11/SDL_x11window.c
@@ -1659,9 +1659,15 @@ void
X11_SetWindowMouseGrab(_THIS, SDL_Window * window, SDL_bool grabbed)
{
SDL_WindowData *data = (SDL_WindowData *) window->driverdata;
- Display *display = data->videodata->display;
+ Display *display;
SDL_bool oldstyle_fullscreen;
+ if (data == NULL) {
+ return;
+ }
+
+ display = data->videodata->display;
+
/* ICCCM2.0-compliant window managers can handle fullscreen windows
If we're using XVidMode to change resolution we need to confine
the cursor so we don't pan around the virtual desktop.
@@ -1719,7 +1725,13 @@ void
X11_SetWindowKeyboardGrab(_THIS, SDL_Window * window, SDL_bool grabbed)
{
SDL_WindowData *data = (SDL_WindowData *) window->driverdata;
- Display *display = data->videodata->display;
+ Display *display;
+
+ if (data == NULL) {
+ return;
+ }
+
+ display = data->videodata->display;
if (grabbed) {
/* If the window is unmapped, XGrab calls return GrabNotViewable,