mirror of
https://github.com/glfw/glfw.git
synced 2024-11-22 10:05:10 +00:00
parent
154b01e8cf
commit
d95b77ebec
@ -69,6 +69,7 @@ used by the tests and examples and are not required to build the library.
|
|||||||
- Added `GLFW_TRUE` and `GLFW_FALSE` as client API independent boolean values
|
- Added `GLFW_TRUE` and `GLFW_FALSE` as client API independent boolean values
|
||||||
- Removed dependency on external OpenGL or OpenGL ES headers
|
- Removed dependency on external OpenGL or OpenGL ES headers
|
||||||
- [Cocoa] Removed support for OS X 10.6
|
- [Cocoa] Removed support for OS X 10.6
|
||||||
|
- [X11] Bugfix: Monitor connection and disconnection events were not reported
|
||||||
- [WGL] Removed dependency on external WGL headers
|
- [WGL] Removed dependency on external WGL headers
|
||||||
- [GLX] Removed dependency on external GLX headers
|
- [GLX] Removed dependency on external GLX headers
|
||||||
- [EGL] Removed dependency on external EGL headers
|
- [EGL] Removed dependency on external EGL headers
|
||||||
|
@ -1374,9 +1374,6 @@ GLFWAPI const char* glfwGetMonitorName(GLFWmonitor* monitor);
|
|||||||
* @return The previously set callback, or `NULL` if no callback was set or the
|
* @return The previously set callback, or `NULL` if no callback was set or the
|
||||||
* library had not been [initialized](@ref intro_init).
|
* library had not been [initialized](@ref intro_init).
|
||||||
*
|
*
|
||||||
* @bug __X11:__ This callback is not yet called on monitor configuration
|
|
||||||
* changes.
|
|
||||||
*
|
|
||||||
* @par Thread Safety
|
* @par Thread Safety
|
||||||
* This function may only be called from the main thread.
|
* This function may only be called from the main thread.
|
||||||
*
|
*
|
||||||
|
@ -486,29 +486,29 @@ static GLFWbool initExtensions(void)
|
|||||||
#endif /*_GLFW_HAS_XF86VM*/
|
#endif /*_GLFW_HAS_XF86VM*/
|
||||||
|
|
||||||
// Check for RandR extension
|
// Check for RandR extension
|
||||||
_glfw.x11.randr.available =
|
if (XRRQueryExtension(_glfw.x11.display,
|
||||||
XRRQueryExtension(_glfw.x11.display,
|
|
||||||
&_glfw.x11.randr.eventBase,
|
&_glfw.x11.randr.eventBase,
|
||||||
&_glfw.x11.randr.errorBase);
|
&_glfw.x11.randr.errorBase))
|
||||||
|
|
||||||
if (_glfw.x11.randr.available)
|
|
||||||
{
|
{
|
||||||
XRRScreenResources* sr;
|
if (XRRQueryVersion(_glfw.x11.display,
|
||||||
|
&_glfw.x11.randr.major,
|
||||||
if (!XRRQueryVersion(_glfw.x11.display,
|
&_glfw.x11.randr.minor))
|
||||||
&_glfw.x11.randr.major,
|
{
|
||||||
&_glfw.x11.randr.minor))
|
// The GLFW RandR path requires at least version 1.3
|
||||||
|
if (_glfw.x11.randr.major > 1 || _glfw.x11.randr.minor >= 3)
|
||||||
|
_glfw.x11.randr.available = GLFW_TRUE;
|
||||||
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
_glfwInputError(GLFW_PLATFORM_ERROR,
|
_glfwInputError(GLFW_PLATFORM_ERROR,
|
||||||
"X11: Failed to query RandR version");
|
"X11: Failed to query RandR version");
|
||||||
return GLFW_FALSE;
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// The GLFW RandR path requires at least version 1.3
|
if (_glfw.x11.randr.available)
|
||||||
if (_glfw.x11.randr.major == 1 && _glfw.x11.randr.minor < 3)
|
{
|
||||||
_glfw.x11.randr.available = GLFW_FALSE;
|
XRRScreenResources* sr = XRRGetScreenResources(_glfw.x11.display,
|
||||||
|
_glfw.x11.root);
|
||||||
sr = XRRGetScreenResources(_glfw.x11.display, _glfw.x11.root);
|
|
||||||
|
|
||||||
if (!sr->ncrtc || !XRRGetCrtcGammaSize(_glfw.x11.display, sr->crtcs[0]))
|
if (!sr->ncrtc || !XRRGetCrtcGammaSize(_glfw.x11.display, sr->crtcs[0]))
|
||||||
{
|
{
|
||||||
@ -522,6 +522,9 @@ static GLFWbool initExtensions(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
XRRFreeScreenResources(sr);
|
XRRFreeScreenResources(sr);
|
||||||
|
|
||||||
|
XRRSelectInput(_glfw.x11.display, _glfw.x11.root,
|
||||||
|
RROutputChangeNotifyMask);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (XineramaQueryExtension(_glfw.x11.display,
|
if (XineramaQueryExtension(_glfw.x11.display,
|
||||||
|
@ -480,9 +480,6 @@ static GLFWbool createWindow(_GLFWwindow* window,
|
|||||||
|
|
||||||
_glfwPlatformSetWindowTitle(window, wndconfig->title);
|
_glfwPlatformSetWindowTitle(window, wndconfig->title);
|
||||||
|
|
||||||
XRRSelectInput(_glfw.x11.display, window->x11.handle,
|
|
||||||
RRScreenChangeNotifyMask);
|
|
||||||
|
|
||||||
if (_glfw.x11.im)
|
if (_glfw.x11.im)
|
||||||
{
|
{
|
||||||
window->x11.ic = XCreateIC(_glfw.x11.im,
|
window->x11.ic = XCreateIC(_glfw.x11.im,
|
||||||
@ -852,6 +849,16 @@ static void processEvent(XEvent *event)
|
|||||||
if (_glfw.x11.im)
|
if (_glfw.x11.im)
|
||||||
filtered = XFilterEvent(event, None);
|
filtered = XFilterEvent(event, None);
|
||||||
|
|
||||||
|
if (_glfw.x11.randr.available)
|
||||||
|
{
|
||||||
|
if (event->type == _glfw.x11.randr.eventBase + RRNotify)
|
||||||
|
{
|
||||||
|
XRRUpdateConfiguration(event);
|
||||||
|
_glfwInputMonitorChange();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (event->type != GenericEvent)
|
if (event->type != GenericEvent)
|
||||||
{
|
{
|
||||||
window = findWindowByHandle(event->xany.window);
|
window = findWindowByHandle(event->xany.window);
|
||||||
@ -1412,12 +1419,6 @@ static void processEvent(XEvent *event)
|
|||||||
}
|
}
|
||||||
#endif /*_GLFW_HAS_XINPUT*/
|
#endif /*_GLFW_HAS_XINPUT*/
|
||||||
}
|
}
|
||||||
|
|
||||||
if (event->type - _glfw.x11.randr.eventBase == RRScreenChangeNotify)
|
|
||||||
{
|
|
||||||
XRRUpdateConfiguration(event);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user