diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index cfb4f42ca..0e1d88342 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -282,10 +282,12 @@ video tutorials. - Corentin Wallez - Torsten Walluhn - Patrick Walton + - Ivor Wanders - Jim Wang - Xo Wang - Andre Weissflog - Jay Weisskopf + - Drew Weymouth - Frank Wille - Andy Williams - Joel Winarske diff --git a/README.md b/README.md index 690c0c4e8..af63f7945 100644 --- a/README.md +++ b/README.md @@ -148,10 +148,13 @@ information on what to include when reporting a bug. - [Wayland] Bugfix: The cursor position was not updated when clicking through from a modal to the content area - [X11] Bugfix: Running without a WM could trigger an assert (#2593,#2601,#2631) + - [X11] Bugfix: Occasional crash when an idle display awakes (#2766) - [Null] Added Vulkan 'window' surface creation via `VK_EXT_headless_surface` - [Null] Added EGL context creation on Mesa via `EGL_MESA_platform_surfaceless` - [EGL] Allowed native access on Wayland with `GLFW_CONTEXT_CREATION_API` set to `GLFW_NATIVE_CONTEXT_API` (#2518) + - [X11] Bugfix: Prevent BadWindow when creating small windows with a content scale + less than 1 (#2754) ## Contact diff --git a/src/x11_monitor.c b/src/x11_monitor.c index 3af827520..74c57ed01 100644 --- a/src/x11_monitor.c +++ b/src/x11_monitor.c @@ -151,6 +151,11 @@ void _glfwPollMonitorsX11(void) } XRRCrtcInfo* ci = XRRGetCrtcInfo(_glfw.x11.display, sr, oi->crtc); + if (!ci) { + XRRFreeOutputInfo(oi); + continue; + } + if (ci->rotation == RR_Rotate_90 || ci->rotation == RR_Rotate_270) { widthMM = oi->mm_height; diff --git a/src/x11_window.c b/src/x11_window.c index 21c19a90f..c96c77ff0 100644 --- a/src/x11_window.c +++ b/src/x11_window.c @@ -576,6 +576,10 @@ static GLFWbool createNativeWindow(_GLFWwindow* window, height *= _glfw.x11.contentScaleY; } + // The dimensions must be nonzero, or a BadValue error results. + width = _glfw_max(1, width); + height = _glfw_max(1, height); + int xpos = 0, ypos = 0; if (wndconfig->xpos != GLFW_ANY_POSITION && wndconfig->ypos != GLFW_ANY_POSITION)