Compare commits

...

3 Commits

Author SHA1 Message Date
Luis G. Torres
76587d0b20
Merge c5e83f1b6a into 768e81a0eb 2025-08-15 04:30:47 +08:00
Jan Hendrik Farr
768e81a0eb Wayland: Fix key repeat halting
Key repeat shoud only be halted when the repeating key
is released, not when another key is released.
2025-08-14 15:35:04 +02:00
Luis Torres
c5e83f1b6a Cocoa: Fix glfwGetFramebufferSize() for non-retina windows.
On some Macs, glfwGetFramebufferSize() would return a high-resolution result even when the GL framebuffer was not created in high-resolution (retina) mode. This is because the screen-to-pixel conversion function, convertRectToBacking(), doesn't take into account whether the framebuffer was created in high-resolution mode; it will always return a high-resolution result if the device is high-res.

Now we check whether the framebuffer is indeed in retina mode before using the convertRectToBacking() function.

Fixes #2478
2025-02-28 13:25:46 -08:00
4 changed files with 25 additions and 7 deletions

View File

@ -68,6 +68,7 @@ video tutorials.
- Jan Ekström - Jan Ekström
- Siavash Eliasi - Siavash Eliasi
- er-azh - er-azh
- Jan Hendrik Farr
- Ahmad Fatoum - Ahmad Fatoum
- Nikita Fediuchin - Nikita Fediuchin
- Felipe Ferreira - Felipe Ferreira
@ -263,6 +264,7 @@ video tutorials.
- Jared Tiala - Jared Tiala
- Sergey Tikhomirov - Sergey Tikhomirov
- Arthur Tombs - Arthur Tombs
- Luis Torres
- TronicLabs - TronicLabs
- Ioannis Tsakpinis - Ioannis Tsakpinis
- Samuli Tuomola - Samuli Tuomola

View File

@ -128,6 +128,8 @@ information on what to include when reporting a bug.
- [Win32] Removed support for Windows XP and Vista (#2505) - [Win32] Removed support for Windows XP and Vista (#2505)
- [Cocoa] Added `QuartzCore` framework as link-time dependency - [Cocoa] Added `QuartzCore` framework as link-time dependency
- [Cocoa] Removed support for OS X 10.10 Yosemite and earlier (#2506) - [Cocoa] Removed support for OS X 10.10 Yosemite and earlier (#2506)
- [Cocoa] Bugfix: glfwGetFramebufferSize() now returns correct values for
non-retina windows for some Macs. (#2478)
- [Wayland] Bugfix: The fractional scaling related objects were not destroyed - [Wayland] Bugfix: The fractional scaling related objects were not destroyed
- [Wayland] Bugfix: `glfwInit` would segfault on compositor with no seat (#2517) - [Wayland] Bugfix: `glfwInit` would segfault on compositor with no seat (#2517)
- [Wayland] Bugfix: A drag entering a non-GLFW surface could cause a segfault - [Wayland] Bugfix: A drag entering a non-GLFW surface could cause a segfault
@ -138,6 +140,7 @@ information on what to include when reporting a bug.
- [Wayland] Bugfix: Retrieved cursor position would be incorrect when hovering over - [Wayland] Bugfix: Retrieved cursor position would be incorrect when hovering over
fallback decorations fallback decorations
- [Wayland] Bugfix: Fallback decorations would report scroll events - [Wayland] Bugfix: Fallback decorations would report scroll events
- [Wayland] Bugfix: Keyboard repeat events halted when any key is released (#2568)
- [X11] Bugfix: Running without a WM could trigger an assert (#2593,#2601,#2631) - [X11] Bugfix: Running without a WM could trigger an assert (#2593,#2601,#2631)
- [Null] Added Vulkan 'window' surface creation via `VK_EXT_headless_surface` - [Null] Added Vulkan 'window' surface creation via `VK_EXT_headless_surface`
- [Null] Added EGL context creation on Mesa via `EGL_MESA_platform_surfaceless` - [Null] Added EGL context creation on Mesa via `EGL_MESA_platform_surfaceless`

View File

@ -1133,12 +1133,24 @@ void _glfwGetFramebufferSizeCocoa(_GLFWwindow* window, int* width, int* height)
@autoreleasepool { @autoreleasepool {
const NSRect contentRect = [window->ns.view frame]; const NSRect contentRect = [window->ns.view frame];
if (window->ns.scaleFramebuffer)
{
const NSRect fbRect = [window->ns.view convertRectToBacking:contentRect]; const NSRect fbRect = [window->ns.view convertRectToBacking:contentRect];
if (width) if (width)
*width = (int) fbRect.size.width; *width = (int) fbRect.size.width;
if (height) if (height)
*height = (int) fbRect.size.height; *height = (int) fbRect.size.height;
}
else
{
if (width)
*width = (int) contentRect.size.width;
if (height)
*height = (int) contentRect.size.height;
}
} // autoreleasepool } // autoreleasepool
} }

View File

@ -1838,10 +1838,11 @@ static void keyboardHandleKey(void* userData,
timer.it_value.tv_sec = _glfw.wl.keyRepeatDelay / 1000; timer.it_value.tv_sec = _glfw.wl.keyRepeatDelay / 1000;
timer.it_value.tv_nsec = (_glfw.wl.keyRepeatDelay % 1000) * 1000000; timer.it_value.tv_nsec = (_glfw.wl.keyRepeatDelay % 1000) * 1000000;
}
}
timerfd_settime(_glfw.wl.keyRepeatTimerfd, 0, &timer, NULL); timerfd_settime(_glfw.wl.keyRepeatTimerfd, 0, &timer, NULL);
}
} else if (scancode == _glfw.wl.keyRepeatScancode) {
timerfd_settime(_glfw.wl.keyRepeatTimerfd, 0, &timer, NULL);
}
_glfwInputKey(window, key, scancode, action, _glfw.wl.xkb.modifiers); _glfwInputKey(window, key, scancode, action, _glfw.wl.xkb.modifiers);