Fixed bug #5256: X11 Segmentation fault with multiple windows and renderers

First window is created and it triggers and 'EnterNotify' event
which calls SDL_SetMouseFocus() and X11_ShowCursor() while the second
windows hasn't finished to be created  (eg window->driverdata isn't set)
Just check for a valid 'driverdata'
main
Sylvain 2022-01-25 17:14:01 +01:00
parent e2d74bcbe5
commit 8c660ccb6f
No known key found for this signature in database
GPG Key ID: 5F87E02E5BC0939E
1 changed files with 7 additions and 6 deletions

View File

@ -294,14 +294,15 @@ X11_ShowCursor(SDL_Cursor * cursor)
SDL_VideoDevice *video = SDL_GetVideoDevice();
Display *display = GetDisplay();
SDL_Window *window;
SDL_WindowData *data;
for (window = video->windows; window; window = window->next) {
data = (SDL_WindowData *)window->driverdata;
if (x11_cursor != None) {
X11_XDefineCursor(display, data->xwindow, x11_cursor);
} else {
X11_XUndefineCursor(display, data->xwindow);
SDL_WindowData *data = (SDL_WindowData *)window->driverdata;
if (data) {
if (x11_cursor != None) {
X11_XDefineCursor(display, data->xwindow, x11_cursor);
} else {
X11_XUndefineCursor(display, data->xwindow);
}
}
}
X11_XFlush(display);