Wayland: Fix error from glfwSetWindowAspectRatio

The aspect ratio was applied during resize but any call to
glfwSetWindowAspectRatio emitted a GLFW_FEATURE_UNIMPLEMENTED error.
This commit is contained in:
Camilla Löwy
2022-06-14 20:37:31 +02:00
parent e37ba80b13
commit 91f18fb576
2 changed files with 16 additions and 4 deletions

View File

@@ -1923,10 +1923,20 @@ void _glfwSetWindowSizeLimitsWayland(_GLFWwindow* window,
void _glfwSetWindowAspectRatioWayland(_GLFWwindow* window, int numer, int denom)
{
// TODO: find out how to trigger a resize.
// The actual limits are checked in the xdg_toplevel::configure handler.
_glfwInputError(GLFW_FEATURE_UNIMPLEMENTED,
"Wayland: Window aspect ratio not yet implemented");
if (window->wl.maximized || window->wl.fullscreen)
return;
if (numer != GLFW_DONT_CARE && denom != GLFW_DONT_CARE)
{
const float aspectRatio = (float) window->wl.width / (float) window->wl.height;
const float targetRatio = (float) numer / (float) denom;
if (aspectRatio < targetRatio)
window->wl.height = window->wl.width / targetRatio;
else if (aspectRatio > targetRatio)
window->wl.width = window->wl.height * targetRatio;
resizeWindow(window);
}
}
void _glfwGetFramebufferSizeWayland(_GLFWwindow* window, int* width, int* height)