[mutter] backends/native: Update cursor also when scaled or transformed



commit 43ae37a93ee862d2a3770a1ba5be0e1dcbc18751
Author: Sebastian Wick <sebastian wick redhat com>
Date:   Wed Apr 13 16:32:35 2022 +0200

    backends/native: Update cursor also when scaled or transformed
    
    MetaCursorRendererNative only updates the cursor state when the
    underlying texture changes. The cursor scale and transform do not
    trigger updates. This results in wrong cursor orientations on rotated
    displays. Use both texture changes and scale and transformation changes
    to figure out when to update the cursor state.
    
    Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2363>

 src/backends/native/meta-cursor-renderer-native.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)
---
diff --git a/src/backends/native/meta-cursor-renderer-native.c 
b/src/backends/native/meta-cursor-renderer-native.c
index c969743246..0eada201c1 100644
--- a/src/backends/native/meta-cursor-renderer-native.c
+++ b/src/backends/native/meta-cursor-renderer-native.c
@@ -159,6 +159,10 @@ ensure_cursor_priv (MetaCursorSprite *cursor_sprite);
 static MetaCursorNativePrivate *
 get_cursor_priv (MetaCursorSprite *cursor_sprite);
 
+static gboolean
+is_cursor_scale_and_transform_valid (MetaCursorRenderer *renderer,
+                                     MetaCursorSprite   *cursor_sprite);
+
 static MetaCursorRendererNativeGpuData *
 meta_cursor_renderer_native_gpu_data_from_gpu (MetaGpuKms *gpu_kms)
 {
@@ -1069,10 +1073,12 @@ meta_cursor_renderer_native_update_cursor (MetaCursorRenderer *renderer,
     {
       gboolean realized;
 
+      ensure_cursor_priv (cursor_sprite);
       realized = meta_cursor_sprite_realize_texture (cursor_sprite);
       gpus = calculate_cursor_sprite_gpus (renderer, cursor_sprite);
 
-      if (realized)
+      if (realized ||
+          !is_cursor_scale_and_transform_valid (renderer, cursor_sprite))
         realize_cursor_sprite (renderer, cursor_sprite, gpus);
     }
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]