diff --git a/src/wl_window.c b/src/wl_window.c index d7f12660..94970d14 100644 --- a/src/wl_window.c +++ b/src/wl_window.c @@ -306,8 +306,7 @@ static void setContentAreaOpaque(_GLFWwindow* window) wl_region_destroy(region); } - -static void resizeWindow(_GLFWwindow* window) +static void resizeFramebuffer(_GLFWwindow* window) { int scale = window->wl.contentScale; int scaledWidth = window->wl.width * scale; @@ -315,9 +314,16 @@ static void resizeWindow(_GLFWwindow* window) if (window->wl.egl.window) wl_egl_window_resize(window->wl.egl.window, scaledWidth, scaledHeight, 0, 0); + if (!window->wl.transparent) setContentAreaOpaque(window); + _glfwInputFramebufferSize(window, scaledWidth, scaledHeight); +} + +static void resizeWindow(_GLFWwindow* window) +{ + resizeFramebuffer(window); if (!window->wl.decorations.top.surface) return; @@ -363,7 +369,7 @@ void _glfwUpdateContentScaleWayland(_GLFWwindow* window) window->wl.contentScale = maxScale; wl_surface_set_buffer_scale(window->wl.surface, maxScale); _glfwInputWindowContentScale(window, maxScale, maxScale); - resizeWindow(window); + resizeFramebuffer(window); if (window->wl.visible) _glfwInputWindowDamage(window);