diff options
author | Georges Basile Stavracas Neto <georges.stavracas@gmail.com> | 2022-12-03 10:36:26 -0300 |
---|---|---|
committer | Robert Mader <robert.mader@collabora.com> | 2023-01-06 13:53:08 +0100 |
commit | 9113b78a3f3b25aee89d9b69bd639c1e4cb01e74 (patch) | |
tree | bd6be825e6f77f3a1fc5c7d9561bac5bf0909962 | |
parent | 1b446289f6b7c89c7fde36c4625fd8343c699d90 (diff) | |
download | mutter-9113b78a3f3b25aee89d9b69bd639c1e4cb01e74.tar.gz |
window-actor: Use logical monitor scale on cursor scale
When using 'scale-monitor-framebuffer', it's important to use the
monitor's scale on top of the cursor texture scale. This matches
what the monitor screencast source does.
Closes https://gitlab.gnome.org/GNOME/mutter/-/issues/1541
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2737>
(cherry picked from commit 381de44c5dd50ec61f583239a11d5a9c35c5f05d)
-rw-r--r-- | src/compositor/meta-window-actor.c | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/src/compositor/meta-window-actor.c b/src/compositor/meta-window-actor.c index 2d0015d1f..315ce533e 100644 --- a/src/compositor/meta-window-actor.c +++ b/src/compositor/meta-window-actor.c @@ -1237,15 +1237,20 @@ meta_window_actor_transform_cursor_position (MetaScreenCastWindow *screen_cast_w meta_cursor_sprite_get_cogl_texture (cursor_sprite) && out_cursor_scale) { - MetaShapedTexture *stex; - double texture_scale; + MetaLogicalMonitor *logical_monitor; + float view_scale; float cursor_texture_scale; - stex = meta_surface_actor_get_texture (priv->surface); - texture_scale = meta_shaped_texture_get_buffer_scale (stex); + logical_monitor = meta_window_get_main_logical_monitor (window); + + if (meta_is_stage_views_scaled ()) + view_scale = meta_logical_monitor_get_scale (logical_monitor); + else + view_scale = 1.0; + cursor_texture_scale = meta_cursor_sprite_get_texture_scale (cursor_sprite); - *out_cursor_scale = texture_scale / cursor_texture_scale; + *out_cursor_scale = view_scale * cursor_texture_scale; } if (out_relative_cursor_position) |