X11: Narrow criteria for disabling RandR

Fixes #972.
This commit is contained in:
Camilla Löwy 2017-03-19 05:30:27 +01:00
parent cf2eab5b4e
commit 5fe4dfb511
3 changed files with 9 additions and 18 deletions

View File

@ -172,6 +172,7 @@ information on what to include when reporting a bug.
- [X11] Bugfix: Dynamic X11 library loading did not use full sonames (#941) - [X11] Bugfix: Dynamic X11 library loading did not use full sonames (#941)
- [X11] Bugfix: Window creation on 64-bit would read past top of stack (#951) - [X11] Bugfix: Window creation on 64-bit would read past top of stack (#951)
- [X11] Bugfix: XDND support had multiple non-conformance issues (#968) - [X11] Bugfix: XDND support had multiple non-conformance issues (#968)
- [X11] Bugfix: The RandR monitor path was disabled despite working RandR (#972)
- [Linux] Bugfix: Event processing did not detect joystick disconnection (#932) - [Linux] Bugfix: Event processing did not detect joystick disconnection (#932)
- [Cocoa] Added support for Vulkan window surface creation via - [Cocoa] Added support for Vulkan window surface creation via
[MoltenVK](https://moltengl.com/moltenvk/) (#870) [MoltenVK](https://moltengl.com/moltenvk/) (#870)

View File

@ -530,26 +530,23 @@ static GLFWbool initExtensions(void)
if (!sr->ncrtc || !XRRGetCrtcGammaSize(_glfw.x11.display, sr->crtcs[0])) if (!sr->ncrtc || !XRRGetCrtcGammaSize(_glfw.x11.display, sr->crtcs[0]))
{ {
// This is either a headless system or an older Nvidia binary driver // This is likely an older Nvidia driver with broken gamma support
// with broken gamma support // Flag it as useless and fall back to xf86vm gamma, if available
// Flag it as useless and fall back to Xf86VidMode gamma, if
// available
_glfwInputError(GLFW_PLATFORM_ERROR,
"X11: Detected broken RandR gamma ramp support");
_glfw.x11.randr.gammaBroken = GLFW_TRUE; _glfw.x11.randr.gammaBroken = GLFW_TRUE;
} }
if (!sr->ncrtc || !sr->noutput || !sr->nmode) if (!sr->ncrtc)
{ {
// This is either a headless system or broken Cygwin/X RandR // A system without CRTCs is likely a system with broken RandR
// Flag it as useless and fall back to Xlib display functions // Disable the RandR monitor path and fall back to core functions
_glfwInputError(GLFW_PLATFORM_ERROR,
"X11: Detected broken RandR monitor support");
_glfw.x11.randr.monitorBroken = GLFW_TRUE; _glfw.x11.randr.monitorBroken = GLFW_TRUE;
} }
XRRFreeScreenResources(sr); XRRFreeScreenResources(sr);
}
if (_glfw.x11.randr.available && !_glfw.x11.randr.monitorBroken)
{
XRRSelectInput(_glfw.x11.display, _glfw.x11.root, XRRSelectInput(_glfw.x11.display, _glfw.x11.root,
RROutputChangeNotifyMask); RROutputChangeNotifyMask);
} }

View File

@ -202,13 +202,6 @@ void _glfwPollMonitorsX11(void)
} }
free(disconnected); free(disconnected);
if (!_glfw.monitorCount)
{
_glfwInputError(GLFW_PLATFORM_ERROR,
"X11: RandR monitor support seems broken");
_glfw.x11.randr.monitorBroken = GLFW_TRUE;
}
} }
if (!_glfw.monitorCount) if (!_glfw.monitorCount)