diff --git a/glfw/wl_window.c b/glfw/wl_window.c index bd15fd326..37ed1b0d1 100644 --- a/glfw/wl_window.c +++ b/glfw/wl_window.c @@ -316,28 +316,30 @@ checkScaleChange(_GLFWwindow* window) { static void update_regions(_GLFWwindow* window) { - struct wl_region* region = wl_compositor_create_region(_glfw.wl.compositor); - if (!region) return; - wl_region_add(region, 0, 0, window->wl.width, window->wl.height); - // Makes the surface considered as XRGB instead of ARGB. - if (!window->wl.transparent) wl_surface_set_opaque_region(window->wl.surface, region); - + if (!window->wl.transparent) { + struct wl_region* region = wl_compositor_create_region(_glfw.wl.compositor); + if (!region) return; + wl_region_add(region, 0, 0, window->wl.width, window->wl.height); + // Makes the surface considered as XRGB instead of ARGB. + wl_surface_set_opaque_region(window->wl.surface, region); + wl_region_destroy(region); + } // Set blur region if (_glfw.wl.org_kde_kwin_blur_manager) { - // NULL means entire window if (window->wl.has_blur) { if (!window->wl.org_kde_kwin_blur) window->wl.org_kde_kwin_blur = org_kde_kwin_blur_manager_create(_glfw.wl.org_kde_kwin_blur_manager, window->wl.surface); - if (window->wl.org_kde_kwin_blur) + if (window->wl.org_kde_kwin_blur) { + // NULL means entire window org_kde_kwin_blur_set_region(window->wl.org_kde_kwin_blur, NULL); - org_kde_kwin_blur_commit(window->wl.org_kde_kwin_blur); + org_kde_kwin_blur_commit(window->wl.org_kde_kwin_blur); + } } else { org_kde_kwin_blur_manager_unset(_glfw.wl.org_kde_kwin_blur_manager, window->wl.surface); if (window->wl.org_kde_kwin_blur) { org_kde_kwin_blur_release(window->wl.org_kde_kwin_blur); window->wl.org_kde_kwin_blur = NULL; } } } - wl_region_destroy(region); } int