diff --git a/src/video/x11/SDL_x11window.c b/src/video/x11/SDL_x11window.c index 5aa91ed105..b33295d5ac 100644 --- a/src/video/x11/SDL_x11window.c +++ b/src/video/x11/SDL_x11window.c @@ -1324,6 +1324,14 @@ void X11_SetWindowSize(SDL_VideoDevice *_this, SDL_Window *window) data->pending_operation |= X11_PENDING_OP_RESIZE; X11_XResizeWindow(display, data->xwindow, data->expected.w, data->expected.h); } + + /* External windows may call this to update the renderer size, but not pump SDL events, + * so the size event needs to be synthesized for external windows. If it is wrong, the + * true size will be sent if/when events are processed. + */ + if (window->flags & SDL_WINDOW_EXTERNAL) { + SDL_SendWindowEvent(window, SDL_EVENT_WINDOW_RESIZED, window->pending.w, window->pending.h); + } } bool X11_GetWindowBordersSize(SDL_VideoDevice *_this, SDL_Window *window, int *top, int *left, int *bottom, int *right)