[mutter] cursor-tracker: Keep a pointer to the backend
- From: Georges Basile Stavracas Neto <gbsneto src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [mutter] cursor-tracker: Keep a pointer to the backend
- Date: Thu, 6 Aug 2020 16:26:39 +0000 (UTC)
commit c23b675dafca14dc6ee4e108f15a78aaf95fb3bd
Author: Jonas Ã…dahl <jadahl gmail com>
Date: Mon Jul 27 15:12:33 2020 +0200
cursor-tracker: Keep a pointer to the backend
https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1391
src/backends/meta-backend.c | 4 +-
src/backends/meta-cursor-tracker.c | 75 ++++++++++++++++++++++++++++++++++++--
2 files changed, 74 insertions(+), 5 deletions(-)
---
diff --git a/src/backends/meta-backend.c b/src/backends/meta-backend.c
index 7694d90a78..70e9d080fc 100644
--- a/src/backends/meta-backend.c
+++ b/src/backends/meta-backend.c
@@ -988,7 +988,9 @@ meta_backend_initable_init (GInitable *initable,
if (!priv->renderer)
return FALSE;
- priv->cursor_tracker = g_object_new (META_TYPE_CURSOR_TRACKER, NULL);
+ priv->cursor_tracker = g_object_new (META_TYPE_CURSOR_TRACKER,
+ "backend", backend,
+ NULL);
priv->dnd = g_object_new (META_TYPE_DND, NULL);
diff --git a/src/backends/meta-cursor-tracker.c b/src/backends/meta-cursor-tracker.c
index 046b99e602..3ec546934d 100644
--- a/src/backends/meta-cursor-tracker.c
+++ b/src/backends/meta-cursor-tracker.c
@@ -45,6 +45,17 @@
#include "meta/util.h"
#include "x11/meta-x11-display-private.h"
+enum
+{
+ PROP_0,
+
+ PROP_BACKEND,
+
+ N_PROPS
+};
+
+static GParamSpec *obj_props[N_PROPS];
+
struct _MetaCursorTracker
{
GObject parent;
@@ -52,6 +63,8 @@ struct _MetaCursorTracker
typedef struct _MetaCursorTrackerPrivate
{
+ MetaBackend *backend;
+
gboolean is_showing;
MetaCursorSprite *effective_cursor; /* May be NULL when hidden */
@@ -144,9 +157,8 @@ change_cursor_renderer (MetaCursorTracker *tracker)
{
MetaCursorTrackerPrivate *priv =
meta_cursor_tracker_get_instance_private (tracker);
- MetaBackend *backend = meta_get_backend ();
MetaCursorRenderer *cursor_renderer =
- meta_backend_get_cursor_renderer (backend);
+ meta_backend_get_cursor_renderer (priv->backend);
meta_cursor_renderer_set_cursor (cursor_renderer, priv->effective_cursor);
}
@@ -174,6 +186,48 @@ meta_cursor_tracker_init (MetaCursorTracker *tracker)
priv->is_showing = TRUE;
}
+static void
+meta_cursor_tracker_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ MetaCursorTracker *tracker = META_CURSOR_TRACKER (object);
+ MetaCursorTrackerPrivate *priv =
+ meta_cursor_tracker_get_instance_private (tracker);
+
+ switch (prop_id)
+ {
+ case PROP_BACKEND:
+ g_value_set_object (value, priv->backend);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+static void
+meta_cursor_tracker_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ MetaCursorTracker *tracker = META_CURSOR_TRACKER (object);
+ MetaCursorTrackerPrivate *priv =
+ meta_cursor_tracker_get_instance_private (tracker);
+
+ switch (prop_id)
+ {
+ case PROP_BACKEND:
+ priv->backend = g_value_get_object (value);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
static void
meta_cursor_tracker_finalize (GObject *object)
{
@@ -193,8 +247,20 @@ meta_cursor_tracker_class_init (MetaCursorTrackerClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
+ object_class->get_property = meta_cursor_tracker_get_property;
+ object_class->set_property = meta_cursor_tracker_set_property;
object_class->finalize = meta_cursor_tracker_finalize;
+ obj_props[PROP_BACKEND] =
+ g_param_spec_object ("backend",
+ "backend",
+ "MetaBackend",
+ META_TYPE_BACKEND,
+ G_PARAM_READWRITE |
+ G_PARAM_CONSTRUCT_ONLY |
+ G_PARAM_STATIC_STRINGS);
+ g_object_class_install_properties (object_class, N_PROPS, obj_props);
+
signals[CURSOR_CHANGED] = g_signal_new ("cursor-changed",
G_TYPE_FROM_CLASS (klass),
G_SIGNAL_RUN_LAST,
@@ -419,9 +485,10 @@ meta_cursor_tracker_update_position (MetaCursorTracker *tracker,
float new_x,
float new_y)
{
- MetaBackend *backend = meta_get_backend ();
+ MetaCursorTrackerPrivate *priv =
+ meta_cursor_tracker_get_instance_private (tracker);
MetaCursorRenderer *cursor_renderer =
- meta_backend_get_cursor_renderer (backend);
+ meta_backend_get_cursor_renderer (priv->backend);
g_assert (meta_is_wayland_compositor ());
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]