mirror of
https://github.com/glfw/glfw.git
synced 2024-11-14 06:23:50 +00:00
parent
036da0fb4e
commit
87490316c8
@ -102,6 +102,7 @@ GLFW bundles a number of dependencies in the `deps/` directory.
|
|||||||
- [X11] Bugfix: Window frame interactions were reported as focus events
|
- [X11] Bugfix: Window frame interactions were reported as focus events
|
||||||
- [X11] Bugfix: Workaround for legacy Compiz caused flickering during resize
|
- [X11] Bugfix: Workaround for legacy Compiz caused flickering during resize
|
||||||
- [X11] Bugfix: The name pointer of joysticks were not cleared on disconnection
|
- [X11] Bugfix: The name pointer of joysticks were not cleared on disconnection
|
||||||
|
- [X11] Bugfix: Video mode dimensions were not rotated to match the CRTC
|
||||||
|
|
||||||
|
|
||||||
## Contact
|
## Contact
|
||||||
@ -139,6 +140,7 @@ skills.
|
|||||||
- Niklas Bergström
|
- Niklas Bergström
|
||||||
- Doug Binks
|
- Doug Binks
|
||||||
- blanco
|
- blanco
|
||||||
|
- Martin Capitanio
|
||||||
- Lambert Clara
|
- Lambert Clara
|
||||||
- Andrew Corrigan
|
- Andrew Corrigan
|
||||||
- Noel Cower
|
- Noel Cower
|
||||||
|
@ -66,11 +66,22 @@ static const XRRModeInfo* getModeInfo(const XRRScreenResources* sr, RRMode id)
|
|||||||
|
|
||||||
// Convert RandR mode info to GLFW video mode
|
// Convert RandR mode info to GLFW video mode
|
||||||
//
|
//
|
||||||
static GLFWvidmode vidmodeFromModeInfo(const XRRModeInfo* mi)
|
static GLFWvidmode vidmodeFromModeInfo(const XRRModeInfo* mi,
|
||||||
|
const XRRCrtcInfo* ci)
|
||||||
{
|
{
|
||||||
GLFWvidmode mode;
|
GLFWvidmode mode;
|
||||||
mode.width = mi->width;
|
|
||||||
mode.height = mi->height;
|
if (ci->rotation == RR_Rotate_90 || ci->rotation == RR_Rotate_270)
|
||||||
|
{
|
||||||
|
mode.width = mi->height;
|
||||||
|
mode.height = mi->width;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
mode.width = mi->width;
|
||||||
|
mode.height = mi->height;
|
||||||
|
}
|
||||||
|
|
||||||
mode.refreshRate = calculateRefreshRate(mi);
|
mode.refreshRate = calculateRefreshRate(mi);
|
||||||
|
|
||||||
_glfwSplitBPP(DefaultDepth(_glfw.x11.display, _glfw.x11.screen),
|
_glfwSplitBPP(DefaultDepth(_glfw.x11.display, _glfw.x11.screen),
|
||||||
@ -113,7 +124,7 @@ GLboolean _glfwSetVideoMode(_GLFWmonitor* monitor, const GLFWvidmode* desired)
|
|||||||
if (!modeIsGood(mi))
|
if (!modeIsGood(mi))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
const GLFWvidmode mode = vidmodeFromModeInfo(mi);
|
const GLFWvidmode mode = vidmodeFromModeInfo(mi, ci);
|
||||||
if (_glfwCompareVideoModes(best, &mode) == 0)
|
if (_glfwCompareVideoModes(best, &mode) == 0)
|
||||||
{
|
{
|
||||||
native = mi->id;
|
native = mi->id;
|
||||||
@ -325,9 +336,11 @@ GLFWvidmode* _glfwPlatformGetVideoModes(_GLFWmonitor* monitor, int* found)
|
|||||||
{
|
{
|
||||||
int i, j;
|
int i, j;
|
||||||
XRRScreenResources* sr;
|
XRRScreenResources* sr;
|
||||||
|
XRRCrtcInfo* ci;
|
||||||
XRROutputInfo* oi;
|
XRROutputInfo* oi;
|
||||||
|
|
||||||
sr = XRRGetScreenResources(_glfw.x11.display, _glfw.x11.root);
|
sr = XRRGetScreenResources(_glfw.x11.display, _glfw.x11.root);
|
||||||
|
ci = XRRGetCrtcInfo(_glfw.x11.display, sr, monitor->x11.crtc);
|
||||||
oi = XRRGetOutputInfo(_glfw.x11.display, sr, monitor->x11.output);
|
oi = XRRGetOutputInfo(_glfw.x11.display, sr, monitor->x11.output);
|
||||||
|
|
||||||
result = calloc(oi->nmode, sizeof(GLFWvidmode));
|
result = calloc(oi->nmode, sizeof(GLFWvidmode));
|
||||||
@ -338,7 +351,7 @@ GLFWvidmode* _glfwPlatformGetVideoModes(_GLFWmonitor* monitor, int* found)
|
|||||||
if (!modeIsGood(mi))
|
if (!modeIsGood(mi))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
const GLFWvidmode mode = vidmodeFromModeInfo(mi);
|
const GLFWvidmode mode = vidmodeFromModeInfo(mi, ci);
|
||||||
|
|
||||||
for (j = 0; j < *found; j++)
|
for (j = 0; j < *found; j++)
|
||||||
{
|
{
|
||||||
@ -361,6 +374,7 @@ GLFWvidmode* _glfwPlatformGetVideoModes(_GLFWmonitor* monitor, int* found)
|
|||||||
}
|
}
|
||||||
|
|
||||||
XRRFreeOutputInfo(oi);
|
XRRFreeOutputInfo(oi);
|
||||||
|
XRRFreeCrtcInfo(ci);
|
||||||
XRRFreeScreenResources(sr);
|
XRRFreeScreenResources(sr);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -383,7 +397,7 @@ void _glfwPlatformGetVideoMode(_GLFWmonitor* monitor, GLFWvidmode* mode)
|
|||||||
sr = XRRGetScreenResources(_glfw.x11.display, _glfw.x11.root);
|
sr = XRRGetScreenResources(_glfw.x11.display, _glfw.x11.root);
|
||||||
ci = XRRGetCrtcInfo(_glfw.x11.display, sr, monitor->x11.crtc);
|
ci = XRRGetCrtcInfo(_glfw.x11.display, sr, monitor->x11.crtc);
|
||||||
|
|
||||||
*mode = vidmodeFromModeInfo(getModeInfo(sr, ci->mode));
|
*mode = vidmodeFromModeInfo(getModeInfo(sr, ci->mode), ci);
|
||||||
|
|
||||||
XRRFreeCrtcInfo(ci);
|
XRRFreeCrtcInfo(ci);
|
||||||
XRRFreeScreenResources(sr);
|
XRRFreeScreenResources(sr);
|
||||||
|
Loading…
Reference in New Issue
Block a user