summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Garnacho <carlosg@gnome.org>2020-11-19 16:00:12 +0100
committerMarge Bot <marge-bot@gnome.org>2020-11-27 15:14:34 +0000
commit7547891a76cb71b4dc639903e14ac7a768fe1cc8 (patch)
tree731b5be471d6d55a48315a64dd85710e9802252e
parente0444a3d35e35a8b1caf6ce6732f907c4d2f61bd (diff)
downloadmutter-7547891a76cb71b4dc639903e14ac7a768fe1cc8.tar.gz
backends: Straighten MetaInputSettings creation
We have "create" and "get" methods, and a "create" vmethod. Make it all "get" so the backend implementations can keep their own reference without completely lying. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1403>
-rw-r--r--src/backends/meta-backend-private.h2
-rw-r--r--src/backends/meta-backend.c51
-rw-r--r--src/backends/native/meta-backend-native.c4
-rw-r--r--src/backends/x11/cm/meta-backend-x11-cm.c13
-rw-r--r--src/backends/x11/nested/meta-backend-x11-nested.c4
5 files changed, 35 insertions, 39 deletions
diff --git a/src/backends/meta-backend-private.h b/src/backends/meta-backend-private.h
index b4dc5de10..80df654bc 100644
--- a/src/backends/meta-backend-private.h
+++ b/src/backends/meta-backend-private.h
@@ -69,7 +69,7 @@ struct _MetaBackendClass
MetaCursorTracker * (* create_cursor_tracker) (MetaBackend *backend);
MetaRenderer * (* create_renderer) (MetaBackend *backend,
GError **error);
- MetaInputSettings * (* create_input_settings) (MetaBackend *backend);
+ MetaInputSettings * (* get_input_settings) (MetaBackend *backend);
gboolean (* grab_device) (MetaBackend *backend,
int device_id,
diff --git a/src/backends/meta-backend.c b/src/backends/meta-backend.c
index ddedfdd60..b208a5395 100644
--- a/src/backends/meta-backend.c
+++ b/src/backends/meta-backend.c
@@ -122,7 +122,6 @@ struct _MetaBackendPrivate
MetaMonitorManager *monitor_manager;
MetaOrientationManager *orientation_manager;
MetaCursorTracker *cursor_tracker;
- MetaInputSettings *input_settings;
MetaInputMapper *input_mapper;
MetaRenderer *renderer;
#ifdef HAVE_EGL
@@ -202,7 +201,6 @@ meta_backend_finalize (GObject *object)
g_clear_object (&priv->current_device);
g_clear_object (&priv->monitor_manager);
g_clear_object (&priv->orientation_manager);
- g_clear_object (&priv->input_settings);
#ifdef HAVE_REMOTE_DESKTOP
g_clear_object (&priv->remote_desktop);
g_clear_object (&priv->screen_cast);
@@ -521,21 +519,12 @@ create_device_monitors (MetaBackend *backend,
g_list_free (devices);
}
-static MetaInputSettings *
-meta_backend_create_input_settings (MetaBackend *backend)
-{
- return META_BACKEND_GET_CLASS (backend)->create_input_settings (backend);
-}
-
static void
input_mapper_device_mapped_cb (MetaInputMapper *mapper,
ClutterInputDevice *device,
float matrix[6],
- MetaBackend *backend)
+ MetaInputSettings *input_settings)
{
- MetaBackendPrivate *priv = meta_backend_get_instance_private (backend);
- MetaInputSettings *input_settings = priv->input_settings;
-
meta_input_settings_set_device_matrix (input_settings, device, matrix);
}
@@ -543,11 +532,8 @@ static void
input_mapper_device_enabled_cb (MetaInputMapper *mapper,
ClutterInputDevice *device,
gboolean enabled,
- MetaBackend *backend)
+ MetaInputSettings *input_settings)
{
- MetaBackendPrivate *priv = meta_backend_get_instance_private (backend);
- MetaInputSettings *input_settings = priv->input_settings;
-
meta_input_settings_set_device_enabled (input_settings, device, enabled);
}
@@ -555,11 +541,8 @@ static void
input_mapper_device_aspect_ratio_cb (MetaInputMapper *mapper,
ClutterInputDevice *device,
double aspect_ratio,
- MetaBackend *backend)
+ MetaInputSettings *input_settings)
{
- MetaBackendPrivate *priv = meta_backend_get_instance_private (backend);
- MetaInputSettings *input_settings = priv->input_settings;
-
meta_input_settings_set_device_aspect_ratio (input_settings, device, aspect_ratio);
}
@@ -576,6 +559,7 @@ meta_backend_real_post_init (MetaBackend *backend)
{
MetaBackendPrivate *priv = meta_backend_get_instance_private (backend);
ClutterSeat *seat = clutter_backend_get_default_seat (priv->clutter_backend);
+ MetaInputSettings *input_settings;
priv->stage = meta_stage_new (backend);
clutter_actor_realize (priv->stage);
@@ -599,15 +583,22 @@ meta_backend_real_post_init (MetaBackend *backend)
G_CALLBACK (on_device_removed), backend,
G_CONNECT_AFTER);
- priv->input_settings = meta_backend_create_input_settings (backend);
-
priv->input_mapper = meta_input_mapper_new ();
- g_signal_connect (priv->input_mapper, "device-mapped",
- G_CALLBACK (input_mapper_device_mapped_cb), backend);
- g_signal_connect (priv->input_mapper, "device-enabled",
- G_CALLBACK (input_mapper_device_enabled_cb), backend);
- g_signal_connect (priv->input_mapper, "device-aspect-ratio",
- G_CALLBACK (input_mapper_device_aspect_ratio_cb), backend);
+
+ input_settings = meta_backend_get_input_settings (backend);
+
+ if (input_settings)
+ {
+ g_signal_connect (priv->input_mapper, "device-mapped",
+ G_CALLBACK (input_mapper_device_mapped_cb),
+ input_settings);
+ g_signal_connect (priv->input_mapper, "device-enabled",
+ G_CALLBACK (input_mapper_device_enabled_cb),
+ input_settings);
+ g_signal_connect (priv->input_mapper, "device-aspect-ratio",
+ G_CALLBACK (input_mapper_device_aspect_ratio_cb),
+ input_settings);
+ }
#ifdef HAVE_REMOTE_DESKTOP
priv->dbus_session_watcher = g_object_new (META_TYPE_DBUS_SESSION_WATCHER, NULL);
@@ -1521,9 +1512,7 @@ meta_backend_get_input_mapper (MetaBackend *backend)
MetaInputSettings *
meta_backend_get_input_settings (MetaBackend *backend)
{
- MetaBackendPrivate *priv = meta_backend_get_instance_private (backend);
-
- return priv->input_settings;
+ return META_BACKEND_GET_CLASS (backend)->get_input_settings (backend);
}
/**
diff --git a/src/backends/native/meta-backend-native.c b/src/backends/native/meta-backend-native.c
index a78c0866f..79da95fa1 100644
--- a/src/backends/native/meta-backend-native.c
+++ b/src/backends/native/meta-backend-native.c
@@ -259,7 +259,7 @@ meta_backend_native_create_renderer (MetaBackend *backend,
}
static MetaInputSettings *
-meta_backend_native_create_input_settings (MetaBackend *backend)
+meta_backend_native_get_input_settings (MetaBackend *backend)
{
MetaBackendNative *backend_native = META_BACKEND_NATIVE (backend);
@@ -555,7 +555,7 @@ meta_backend_native_class_init (MetaBackendNativeClass *klass)
backend_class->create_monitor_manager = meta_backend_native_create_monitor_manager;
backend_class->get_cursor_renderer = meta_backend_native_get_cursor_renderer;
backend_class->create_renderer = meta_backend_native_create_renderer;
- backend_class->create_input_settings = meta_backend_native_create_input_settings;
+ backend_class->get_input_settings = meta_backend_native_get_input_settings;
backend_class->get_current_logical_monitor = meta_backend_native_get_current_logical_monitor;
diff --git a/src/backends/x11/cm/meta-backend-x11-cm.c b/src/backends/x11/cm/meta-backend-x11-cm.c
index 35e1acf9f..3b39178e0 100644
--- a/src/backends/x11/cm/meta-backend-x11-cm.c
+++ b/src/backends/x11/cm/meta-backend-x11-cm.c
@@ -46,6 +46,8 @@ struct _MetaBackendX11Cm
char *keymap_variants;
char *keymap_options;
int locked_group;
+
+ MetaInputSettings *input_settings;
};
G_DEFINE_TYPE (MetaBackendX11Cm, meta_backend_x11_cm, META_TYPE_BACKEND_X11)
@@ -87,8 +89,11 @@ meta_backend_x11_cm_post_init (MetaBackend *backend)
{
MetaBackendClass *parent_backend_class =
META_BACKEND_CLASS (meta_backend_x11_cm_parent_class);
+ MetaBackendX11Cm *x11_cm = META_BACKEND_X11_CM (backend);
ClutterSeat *seat;
+ x11_cm->input_settings = g_object_new (META_TYPE_INPUT_SETTINGS_X11, NULL);
+
parent_backend_class->post_init (backend);
seat = clutter_backend_get_default_seat (clutter_get_default_backend ());
@@ -143,9 +148,11 @@ meta_backend_x11_cm_create_cursor_tracker (MetaBackend *backend)
}
static MetaInputSettings *
-meta_backend_x11_cm_create_input_settings (MetaBackend *backend)
+meta_backend_x11_cm_get_input_settings (MetaBackend *backend)
{
- return g_object_new (META_TYPE_INPUT_SETTINGS_X11, NULL);
+ MetaBackendX11Cm *x11_cm = META_BACKEND_X11_CM (backend);
+
+ return x11_cm->input_settings;
}
static void
@@ -457,7 +464,7 @@ meta_backend_x11_cm_class_init (MetaBackendX11CmClass *klass)
backend_class->create_monitor_manager = meta_backend_x11_cm_create_monitor_manager;
backend_class->get_cursor_renderer = meta_backend_x11_cm_get_cursor_renderer;
backend_class->create_cursor_tracker = meta_backend_x11_cm_create_cursor_tracker;
- backend_class->create_input_settings = meta_backend_x11_cm_create_input_settings;
+ backend_class->get_input_settings = meta_backend_x11_cm_get_input_settings;
backend_class->update_screen_size = meta_backend_x11_cm_update_screen_size;
backend_class->select_stage_events = meta_backend_x11_cm_select_stage_events;
backend_class->lock_layout_group = meta_backend_x11_cm_lock_layout_group;
diff --git a/src/backends/x11/nested/meta-backend-x11-nested.c b/src/backends/x11/nested/meta-backend-x11-nested.c
index 041f4b87a..425ddcb1a 100644
--- a/src/backends/x11/nested/meta-backend-x11-nested.c
+++ b/src/backends/x11/nested/meta-backend-x11-nested.c
@@ -84,7 +84,7 @@ meta_backend_x11_nested_get_cursor_renderer (MetaBackend *backend,
}
static MetaInputSettings *
-meta_backend_x11_nested_create_input_settings (MetaBackend *backend)
+meta_backend_x11_nested_get_input_settings (MetaBackend *backend)
{
return NULL;
}
@@ -289,7 +289,7 @@ meta_backend_x11_nested_class_init (MetaBackendX11NestedClass *klass)
backend_class->create_renderer = meta_backend_x11_nested_create_renderer;
backend_class->create_monitor_manager = meta_backend_x11_nested_create_monitor_manager;
backend_class->get_cursor_renderer = meta_backend_x11_nested_get_cursor_renderer;
- backend_class->create_input_settings = meta_backend_x11_nested_create_input_settings;
+ backend_class->get_input_settings = meta_backend_x11_nested_get_input_settings;
backend_class->update_screen_size = meta_backend_x11_nested_update_screen_size;
backend_class->select_stage_events = meta_backend_x11_nested_select_stage_events;
backend_class->lock_layout_group = meta_backend_x11_nested_lock_layout_group;