[mutter] backends/x11: Add dummy input-settings implementation



commit ccbdf91776656224d5dcb62c9a6a29ed953e011b
Author: Marco Trevisan (TreviƱo) <mail 3v1n0 net>
Date:   Wed Mar 10 03:18:13 2021 +0100

    backends/x11: Add dummy input-settings implementation
    
    The nested backend may need to have an input setting implementation,
    while we don't want to change the host settings (re-using an X11 input
    settings) we can add a dummy implementation, until something more
    complex is needed.
    
    Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1769>

 src/backends/meta-input-settings-dummy.c          | 295 ++++++++++++++++++++++
 src/backends/meta-input-settings-dummy.h          |  34 +++
 src/backends/x11/nested/meta-backend-x11-nested.c |  32 ++-
 src/meson.build                                   |   2 +
 4 files changed, 362 insertions(+), 1 deletion(-)
---
diff --git a/src/backends/meta-input-settings-dummy.c b/src/backends/meta-input-settings-dummy.c
new file mode 100644
index 0000000000..ff980423c0
--- /dev/null
+++ b/src/backends/meta-input-settings-dummy.c
@@ -0,0 +1,295 @@
+/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
+
+/*
+ * Copyright 2021 Canonical, Ltd.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, see <http://www.gnu.org/licenses/>.
+ *
+ * Author: Marco Trevisan <marco trevisan canonical com>
+ */
+
+#include "backends/meta-input-settings-dummy.h"
+
+G_DEFINE_TYPE (MetaInputSettingsDummy,
+               meta_input_settings_dummy,
+               META_TYPE_INPUT_SETTINGS)
+
+static void
+meta_input_settings_dummy_set_send_events (MetaInputSettings        *settings,
+                                           ClutterInputDevice       *device,
+                                           GDesktopDeviceSendEvents  mode)
+{
+}
+
+static void
+meta_input_settings_dummy_set_matrix (MetaInputSettings  *settings,
+                                      ClutterInputDevice *device,
+                                      gfloat              matrix[6])
+{
+}
+
+static void
+meta_input_settings_dummy_set_speed (MetaInputSettings  *settings,
+                                     ClutterInputDevice *device,
+                                     gdouble             speed)
+{
+}
+
+static void
+meta_input_settings_dummy_set_left_handed (MetaInputSettings  *settings,
+                                           ClutterInputDevice *device,
+                                           gboolean            enabled)
+{
+}
+
+static void
+meta_input_settings_dummy_set_tap_enabled (MetaInputSettings  *settings,
+                                           ClutterInputDevice *device,
+                                           gboolean            enabled)
+{
+}
+
+static void
+meta_input_settings_dummy_set_tap_button_map (MetaInputSettings           *settings,
+                                              ClutterInputDevice          *device,
+                                              GDesktopTouchpadTapButtonMap mode)
+{
+}
+
+static void
+meta_input_settings_dummy_set_tap_and_drag_enabled (MetaInputSettings  *settings,
+                                                    ClutterInputDevice *device,
+                                                    gboolean            enabled)
+{
+}
+
+static void
+meta_input_settings_dummy_set_tap_and_drag_lock_enabled (MetaInputSettings  *settings,
+                                                         ClutterInputDevice *device,
+                                                         gboolean            enabled)
+{
+}
+
+static void
+meta_input_settings_dummy_set_disable_while_typing (MetaInputSettings  *settings,
+                                                    ClutterInputDevice *device,
+                                                    gboolean            enabled)
+{
+}
+
+static void
+meta_input_settings_dummy_set_invert_scroll (MetaInputSettings  *settings,
+                                             ClutterInputDevice *device,
+                                             gboolean            inverted)
+{
+}
+
+static void
+meta_input_settings_dummy_set_edge_scroll (MetaInputSettings  *settings,
+                                           ClutterInputDevice *device,
+                                           gboolean            enabled)
+{
+}
+
+static void
+meta_input_settings_dummy_set_two_finger_scroll (MetaInputSettings  *settings,
+                                                 ClutterInputDevice *device,
+                                                 gboolean            enabled)
+{
+}
+
+static void
+meta_input_settings_dummy_set_scroll_button (MetaInputSettings  *settings,
+                                             ClutterInputDevice *device,
+                                             guint               button,
+                                             gboolean            button_lock)
+{
+}
+
+
+static void
+meta_input_settings_dummy_set_click_method (MetaInputSettings           *settings,
+                                            ClutterInputDevice          *device,
+                                            GDesktopTouchpadClickMethod  mode)
+{
+}
+
+
+static void
+meta_input_settings_dummy_set_keyboard_repeat (MetaInputSettings *settings,
+                                               gboolean           repeat,
+                                               guint              delay,
+                                               guint              interval)
+{
+}
+
+
+static void
+meta_input_settings_dummy_set_tablet_mapping (MetaInputSettings     *settings,
+                                              ClutterInputDevice    *device,
+                                              GDesktopTabletMapping  mapping)
+{
+}
+
+static void
+meta_input_settings_dummy_set_tablet_aspect_ratio (MetaInputSettings  *settings,
+                                                   ClutterInputDevice *device,
+                                                   double              ratio)
+{
+}
+
+static void
+meta_input_settings_dummy_set_tablet_area (MetaInputSettings  *settings,
+                                           ClutterInputDevice *device,
+                                           gdouble             padding_left,
+                                           gdouble             padding_right,
+                                           gdouble             padding_top,
+                                           gdouble             padding_bottom)
+{
+}
+
+
+static void
+meta_input_settings_dummy_set_mouse_accel_profile (MetaInputSettings           *settings,
+                                                   ClutterInputDevice          *device,
+                                                   GDesktopPointerAccelProfile  profile)
+{
+}
+
+static void
+meta_input_settings_dummy_set_trackball_accel_profile (MetaInputSettings           *settings,
+                                                       ClutterInputDevice          *device,
+                                                       GDesktopPointerAccelProfile  profile)
+{
+}
+
+
+static void
+meta_input_settings_dummy_set_stylus_pressure (MetaInputSettings      *settings,
+                                               ClutterInputDevice     *device,
+                                               ClutterInputDeviceTool *tool,
+                                               const gint32            curve[4])
+{
+}
+
+static void
+meta_input_settings_dummy_set_stylus_button_map (MetaInputSettings          *settings,
+                                                 ClutterInputDevice         *device,
+                                                 ClutterInputDeviceTool     *tool,
+                                                 GDesktopStylusButtonAction  primary,
+                                                 GDesktopStylusButtonAction  secondary,
+                                                 GDesktopStylusButtonAction  tertiary)
+{
+}
+
+
+static void
+meta_input_settings_dummy_set_mouse_middle_click_emulation (MetaInputSettings  *settings,
+                                                            ClutterInputDevice *device,
+                                                            gboolean            enabled)
+{
+}
+
+static void
+meta_input_settings_dummy_set_touchpad_middle_click_emulation (MetaInputSettings  *settings,
+                                                               ClutterInputDevice *device,
+                                                               gboolean            enabled)
+{
+}
+
+static void
+meta_input_settings_dummy_set_trackball_middle_click_emulation (MetaInputSettings  *settings,
+                                                                ClutterInputDevice *device,
+                                                                gboolean            enabled)
+{
+}
+
+static gboolean
+meta_input_settings_dummy_has_two_finger_scroll (MetaInputSettings  *settings,
+                                                 ClutterInputDevice *device)
+{
+  return FALSE;
+}
+static gboolean
+meta_input_settings_dummy_is_trackball_device (MetaInputSettings  *settings,
+                                               ClutterInputDevice *device)
+{
+  return FALSE;
+}
+
+static void
+meta_input_settings_dummy_init (MetaInputSettingsDummy *input_settings)
+{
+}
+
+static void
+meta_input_settings_dummy_class_init (MetaInputSettingsDummyClass *klass)
+{
+  MetaInputSettingsClass *input_settings_class = META_INPUT_SETTINGS_CLASS (klass);
+
+  input_settings_class->set_send_events =
+    meta_input_settings_dummy_set_send_events;
+  input_settings_class->set_matrix =
+    meta_input_settings_dummy_set_matrix;
+  input_settings_class->set_speed =
+    meta_input_settings_dummy_set_speed;
+  input_settings_class->set_left_handed =
+    meta_input_settings_dummy_set_left_handed;
+  input_settings_class->set_tap_enabled =
+    meta_input_settings_dummy_set_tap_enabled;
+  input_settings_class->set_tap_button_map =
+    meta_input_settings_dummy_set_tap_button_map;
+  input_settings_class->set_tap_and_drag_enabled =
+    meta_input_settings_dummy_set_tap_and_drag_enabled;
+  input_settings_class->set_tap_and_drag_lock_enabled =
+    meta_input_settings_dummy_set_tap_and_drag_lock_enabled;
+  input_settings_class->set_disable_while_typing =
+    meta_input_settings_dummy_set_disable_while_typing;
+  input_settings_class->set_invert_scroll =
+    meta_input_settings_dummy_set_invert_scroll;
+  input_settings_class->set_edge_scroll =
+    meta_input_settings_dummy_set_edge_scroll;
+  input_settings_class->set_two_finger_scroll =
+    meta_input_settings_dummy_set_two_finger_scroll;
+  input_settings_class->set_scroll_button =
+    meta_input_settings_dummy_set_scroll_button;
+  input_settings_class->set_click_method =
+    meta_input_settings_dummy_set_click_method;
+  input_settings_class->set_keyboard_repeat =
+    meta_input_settings_dummy_set_keyboard_repeat;
+  input_settings_class->set_tablet_mapping =
+    meta_input_settings_dummy_set_tablet_mapping;
+  input_settings_class->set_tablet_aspect_ratio =
+    meta_input_settings_dummy_set_tablet_aspect_ratio;
+  input_settings_class->set_tablet_area =
+    meta_input_settings_dummy_set_tablet_area;
+  input_settings_class->set_mouse_accel_profile =
+    meta_input_settings_dummy_set_mouse_accel_profile;
+  input_settings_class->set_trackball_accel_profile =
+    meta_input_settings_dummy_set_trackball_accel_profile;
+  input_settings_class->set_stylus_pressure =
+    meta_input_settings_dummy_set_stylus_pressure;
+  input_settings_class->set_stylus_button_map =
+    meta_input_settings_dummy_set_stylus_button_map;
+  input_settings_class->set_mouse_middle_click_emulation =
+    meta_input_settings_dummy_set_mouse_middle_click_emulation;
+  input_settings_class->set_touchpad_middle_click_emulation =
+    meta_input_settings_dummy_set_touchpad_middle_click_emulation;
+  input_settings_class->set_trackball_middle_click_emulation =
+    meta_input_settings_dummy_set_trackball_middle_click_emulation;
+  input_settings_class->has_two_finger_scroll =
+    meta_input_settings_dummy_has_two_finger_scroll;
+  input_settings_class->is_trackball_device =
+    meta_input_settings_dummy_is_trackball_device;
+}
diff --git a/src/backends/meta-input-settings-dummy.h b/src/backends/meta-input-settings-dummy.h
new file mode 100644
index 0000000000..9d91dc15db
--- /dev/null
+++ b/src/backends/meta-input-settings-dummy.h
@@ -0,0 +1,34 @@
+/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
+
+/*
+ * Copyright 2021 Canonical, Ltd.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, see <http://www.gnu.org/licenses/>.
+ *
+ * Author: Marco Trevisan <marco trevisan canonical com>
+ */
+
+#pragma once
+
+#include "backends/meta-input-settings-private.h"
+
+#define META_TYPE_INPUT_SETTINGS_DUMMY (meta_input_settings_dummy_get_type ())
+
+G_DECLARE_DERIVABLE_TYPE (MetaInputSettingsDummy, meta_input_settings_dummy,
+                          META, INPUT_SETTINGS_DUMMY, MetaInputSettings);
+
+struct _MetaInputSettingsDummyClass
+{
+  MetaInputSettingsClass parent_class;
+};
diff --git a/src/backends/x11/nested/meta-backend-x11-nested.c 
b/src/backends/x11/nested/meta-backend-x11-nested.c
index 425ddcb1a1..0b8c3053a6 100644
--- a/src/backends/x11/nested/meta-backend-x11-nested.c
+++ b/src/backends/x11/nested/meta-backend-x11-nested.c
@@ -21,6 +21,7 @@
 
 #include "backends/x11/nested/meta-backend-x11-nested.h"
 
+#include "backends/meta-input-settings-dummy.h"
 #include "backends/meta-monitor-manager-dummy.h"
 #include "backends/x11/nested/meta-backend-x11-nested.h"
 #include "backends/x11/nested/meta-cursor-renderer-x11-nested.h"
@@ -32,6 +33,7 @@ typedef struct _MetaBackendX11NestedPrivate
 {
   MetaGpu *gpu;
   MetaCursorRenderer *cursor_renderer;
+  MetaInputSettings *input_settings;
 } MetaBackendX11NestedPrivate;
 
 static GInitableIface *initable_parent_iface;
@@ -86,7 +88,22 @@ meta_backend_x11_nested_get_cursor_renderer (MetaBackend        *backend,
 static MetaInputSettings *
 meta_backend_x11_nested_get_input_settings (MetaBackend *backend)
 {
-  return NULL;
+  MetaBackendX11Nested *backend_x11_nested = META_BACKEND_X11_NESTED (backend);
+  MetaBackendX11NestedPrivate *priv =
+    meta_backend_x11_nested_get_instance_private (backend_x11_nested);
+
+  if (!priv->input_settings)
+    {
+      ClutterSeat *seat;
+
+      seat = clutter_backend_get_default_seat (clutter_get_default_backend ());
+      priv->input_settings =
+        g_object_new (META_TYPE_INPUT_SETTINGS_DUMMY,
+                      "seat", seat,
+                      NULL);
+    }
+
+  return priv->input_settings;
 }
 
 static void
@@ -271,6 +288,18 @@ meta_backend_x11_nested_constructed (GObject *object)
   backend_x11_nested_class->init_gpus (backend_x11_nested);
 }
 
+static void
+meta_backend_x11_nested_dispose (GObject *object)
+{
+  MetaBackendX11Nested *backend_x11_nested = META_BACKEND_X11_NESTED (object);
+  MetaBackendX11NestedPrivate *priv =
+    meta_backend_x11_nested_get_instance_private (backend_x11_nested);
+
+  g_clear_object (&priv->input_settings);
+
+  G_OBJECT_CLASS (meta_backend_x11_nested_parent_class)->dispose (object);
+}
+
 static void
 meta_backend_x11_nested_init (MetaBackendX11Nested *backend_x11_nested)
 {
@@ -284,6 +313,7 @@ meta_backend_x11_nested_class_init (MetaBackendX11NestedClass *klass)
   MetaBackendX11Class *backend_x11_class = META_BACKEND_X11_CLASS (klass);
 
   object_class->constructed = meta_backend_x11_nested_constructed;
+  object_class->dispose = meta_backend_x11_nested_dispose;
 
   backend_class->post_init = meta_backend_x11_nested_post_init;
   backend_class->create_renderer = meta_backend_x11_nested_create_renderer;
diff --git a/src/meson.build b/src/meson.build
index 4b015e6200..7ed0bfca0a 100644
--- a/src/meson.build
+++ b/src/meson.build
@@ -196,6 +196,8 @@ mutter_sources = [
   'backends/meta-input-mapper-private.h',
   'backends/meta-input-settings.c',
   'backends/meta-input-settings-private.h',
+  'backends/meta-input-settings-dummy.c',
+  'backends/meta-input-settings-dummy.h',
   'backends/meta-keymap-utils.c',
   'backends/meta-keymap-utils.h',
   'backends/meta-logical-monitor.c',


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