[mutter/wip/carlosg/input-thread: 27/90] backends: Add ::device property to MetaCursorRenderer




commit 0f3dc508795e5ab58b85d6c68b0d7a0bc614a3df
Author: Carlos Garnacho <carlosg gnome org>
Date:   Mon Jul 13 13:32:48 2020 +0200

    backends: Add ::device property to MetaCursorRenderer
    
    A cursor renderer is made to invariably follow a pointer device, make
    it a construct-time property, and update all creators of cursor renderers
    to specify it.

 src/backends/meta-cursor-renderer.c               | 29 ++++++++++++++++++++++-
 src/backends/meta-cursor-renderer.h               |  4 +++-
 src/backends/native/meta-cursor-renderer-native.c |  4 +++-
 src/backends/native/meta-cursor-renderer-native.h |  3 ++-
 src/backends/native/meta-seat-native.c            |  5 ++--
 src/backends/x11/cm/meta-backend-x11-cm.c         |  1 +
 src/backends/x11/nested/meta-backend-x11-nested.c |  1 +
 7 files changed, 41 insertions(+), 6 deletions(-)
---
diff --git a/src/backends/meta-cursor-renderer.c b/src/backends/meta-cursor-renderer.c
index 53b1a10a2a..095cdbe6d2 100644
--- a/src/backends/meta-cursor-renderer.c
+++ b/src/backends/meta-cursor-renderer.c
@@ -46,6 +46,7 @@ enum
   PROP_0,
 
   PROP_BACKEND,
+  PROP_DEVICE,
 
   N_PROPS
 };
@@ -59,6 +60,7 @@ struct _MetaCursorRendererPrivate
   float current_x;
   float current_y;
 
+  ClutterInputDevice *device;
   MetaCursorSprite *displayed_cursor;
   MetaCursorSprite *overlay_cursor;
 
@@ -205,6 +207,9 @@ meta_cursor_renderer_get_property (GObject    *object,
     case PROP_BACKEND:
       g_value_set_object (value, priv->backend);
       break;
+    case PROP_DEVICE:
+      g_value_set_object (value, priv->device);
+      break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
       break;
@@ -226,6 +231,9 @@ meta_cursor_renderer_set_property (GObject      *object,
     case PROP_BACKEND:
       priv->backend = g_value_get_object (value);
       break;
+    case PROP_DEVICE:
+      priv->device = g_value_get_object (value);
+      break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
       break;
@@ -286,6 +294,14 @@ meta_cursor_renderer_class_init (MetaCursorRendererClass *klass)
                          G_PARAM_READWRITE |
                          G_PARAM_CONSTRUCT_ONLY |
                          G_PARAM_STATIC_STRINGS);
+  obj_props[PROP_DEVICE] =
+    g_param_spec_object ("device",
+                         "device",
+                         "Input device",
+                         CLUTTER_TYPE_INPUT_DEVICE,
+                         G_PARAM_READWRITE |
+                         G_PARAM_CONSTRUCT_ONLY |
+                         G_PARAM_STATIC_STRINGS);
   g_object_class_install_properties (object_class, N_PROPS, obj_props);
 
   signals[CURSOR_PAINTED] = g_signal_new ("cursor-painted",
@@ -396,10 +412,12 @@ meta_cursor_renderer_update_cursor (MetaCursorRenderer *renderer,
 }
 
 MetaCursorRenderer *
-meta_cursor_renderer_new (MetaBackend *backend)
+meta_cursor_renderer_new (MetaBackend        *backend,
+                          ClutterInputDevice *device)
 {
   return g_object_new (META_TYPE_CURSOR_RENDERER,
                        "backend", backend,
+                       "device", device,
                        NULL);
 }
 
@@ -511,3 +529,12 @@ meta_cursor_renderer_is_hw_cursors_inhibited (MetaCursorRenderer *renderer,
 
   return FALSE;
 }
+
+ClutterInputDevice *
+meta_cursor_renderer_get_input_device (MetaCursorRenderer *renderer)
+{
+  MetaCursorRendererPrivate *priv =
+    meta_cursor_renderer_get_instance_private (renderer);
+
+  return priv->device;
+}
diff --git a/src/backends/meta-cursor-renderer.h b/src/backends/meta-cursor-renderer.h
index 7d89af4874..38621027cb 100644
--- a/src/backends/meta-cursor-renderer.h
+++ b/src/backends/meta-cursor-renderer.h
@@ -54,7 +54,8 @@ struct _MetaCursorRendererClass
                               MetaCursorSprite   *cursor_sprite);
 };
 
-MetaCursorRenderer * meta_cursor_renderer_new (MetaBackend *backend);
+MetaCursorRenderer * meta_cursor_renderer_new (MetaBackend        *backend,
+                                               ClutterInputDevice *device);
 
 void meta_cursor_renderer_set_cursor (MetaCursorRenderer *renderer,
                                       MetaCursorSprite   *cursor_sprite);
@@ -83,6 +84,7 @@ graphene_rect_t meta_cursor_renderer_calculate_rect (MetaCursorRenderer *rendere
 
 void meta_cursor_renderer_emit_painted (MetaCursorRenderer *renderer,
                                         MetaCursorSprite   *cursor_sprite);
+ClutterInputDevice * meta_cursor_renderer_get_input_device (MetaCursorRenderer *renderer);
 
 void meta_cursor_renderer_update_stage_overlay (MetaCursorRenderer *renderer,
                                                 MetaCursorSprite   *cursor_sprite);
diff --git a/src/backends/native/meta-cursor-renderer-native.c 
b/src/backends/native/meta-cursor-renderer-native.c
index 3c6688df42..e4b7c07c64 100644
--- a/src/backends/native/meta-cursor-renderer-native.c
+++ b/src/backends/native/meta-cursor-renderer-native.c
@@ -1724,7 +1724,8 @@ init_hw_cursor_support (MetaCursorRendererNative *cursor_renderer_native)
 }
 
 MetaCursorRendererNative *
-meta_cursor_renderer_native_new (MetaBackend *backend)
+meta_cursor_renderer_native_new (MetaBackend        *backend,
+                                 ClutterInputDevice *device)
 {
   MetaMonitorManager *monitor_manager =
     meta_backend_get_monitor_manager (backend);
@@ -1733,6 +1734,7 @@ meta_cursor_renderer_native_new (MetaBackend *backend)
 
   cursor_renderer_native = g_object_new (META_TYPE_CURSOR_RENDERER_NATIVE,
                                          "backend", backend,
+                                         "device", device,
                                          NULL);
   priv =
     meta_cursor_renderer_native_get_instance_private (cursor_renderer_native);
diff --git a/src/backends/native/meta-cursor-renderer-native.h 
b/src/backends/native/meta-cursor-renderer-native.h
index d3560e48f6..26c698cda5 100644
--- a/src/backends/native/meta-cursor-renderer-native.h
+++ b/src/backends/native/meta-cursor-renderer-native.h
@@ -33,6 +33,7 @@ G_DECLARE_FINAL_TYPE (MetaCursorRendererNative, meta_cursor_renderer_native,
                       META, CURSOR_RENDERER_NATIVE,
                       MetaCursorRenderer)
 
-MetaCursorRendererNative * meta_cursor_renderer_native_new (MetaBackend *backend);
+MetaCursorRendererNative * meta_cursor_renderer_native_new (MetaBackend        *backend,
+                                                            ClutterInputDevice *device);
 
 #endif /* META_CURSOR_RENDERER_NATIVE_H */
diff --git a/src/backends/native/meta-seat-native.c b/src/backends/native/meta-seat-native.c
index 6b3e37fb51..a5a83148e1 100644
--- a/src/backends/native/meta-seat-native.c
+++ b/src/backends/native/meta-seat-native.c
@@ -1865,7 +1865,7 @@ update_tablet_cursor_state (MetaSeatNative     *seat_native,
                                                                g_object_unref);
         }
 
-      cursor_renderer = meta_cursor_renderer_new (meta_get_backend ());
+      cursor_renderer = meta_cursor_renderer_new (meta_get_backend (), device);
       g_hash_table_insert (seat_native->tablet_cursors,
                            device, cursor_renderer);
     }
@@ -3331,7 +3331,8 @@ meta_seat_native_maybe_ensure_cursor_renderer (MetaSeatNative     *seat_native,
           MetaCursorRendererNative *cursor_renderer_native;
 
           cursor_renderer_native =
-            meta_cursor_renderer_native_new (meta_get_backend ());
+            meta_cursor_renderer_native_new (meta_get_backend (),
+                                             seat_native->core_pointer);
           seat_native->cursor_renderer =
             META_CURSOR_RENDERER (cursor_renderer_native);
         }
diff --git a/src/backends/x11/cm/meta-backend-x11-cm.c b/src/backends/x11/cm/meta-backend-x11-cm.c
index b00f1ca064..35e1acf9f0 100644
--- a/src/backends/x11/cm/meta-backend-x11-cm.c
+++ b/src/backends/x11/cm/meta-backend-x11-cm.c
@@ -127,6 +127,7 @@ meta_backend_x11_cm_get_cursor_renderer (MetaBackend        *backend,
       x11_cm->cursor_renderer =
         g_object_new (META_TYPE_CURSOR_RENDERER_X11,
                       "backend", backend,
+                      "device", device,
                       NULL);
     }
 
diff --git a/src/backends/x11/nested/meta-backend-x11-nested.c 
b/src/backends/x11/nested/meta-backend-x11-nested.c
index 27143ce141..041f4b87af 100644
--- a/src/backends/x11/nested/meta-backend-x11-nested.c
+++ b/src/backends/x11/nested/meta-backend-x11-nested.c
@@ -76,6 +76,7 @@ meta_backend_x11_nested_get_cursor_renderer (MetaBackend        *backend,
       priv->cursor_renderer =
         g_object_new (META_TYPE_CURSOR_RENDERER_X11_NESTED,
                       "backend", backend,
+                      "device", device,
                       NULL);
     }
 


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