842f73ac4c
Instead of using `clutter_actor_get_resource_scale()`, we now deduce the intended buffer scale from the window by dividing the unscaled size by the final actor size. This is more correct as while the return value of `clutter_actor_get_resource_scale()` depends only on the monitor where the surface resides, the actual scale of the surface is determined solely by the application itself. `get_resource_scale` will differ from the actual buffer scale if the application only supports 100% scaling (Xwayland), or is performing scaling with wp_viewporter (clients using fractional_scale_v1). This also fixes a mismatch between the calculated buffer sizes between `meta_window_actor_get_buffer_bounds` and `meta_window_actor_blit_to_framebuffer` which causes broken screencasting for Chromium 114 and later when using the native Ozone Wayland backend. Additionally, this commit also changes `meta_window_actor_blit_to_framebuffer` from using a simple translation to using an inverted matrix transformation of the transformation matrix between the parent of the window actor and the surface actor to ensure maximum sharpness for fractionally scaled windows. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3053> |
||
---|---|---|
.. | ||
backends | ||
compositor | ||
core | ||
frames | ||
meta | ||
tests | ||
wayland | ||
x11 | ||
libmutter.pc.in | ||
meson.build | ||
meta-private-enum-types.c.in | ||
meta-private-enum-types.h.in |