[mutter] clutter/main: Use "is display server" state to decide a11y routing
- From: Jonas Ådahl <jadahl src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [mutter] clutter/main: Use "is display server" state to decide a11y routing
- Date: Thu, 13 Aug 2020 16:00:30 +0000 (UTC)
commit c7429e8aad0dd350d19e4249779fbee2f03c60b4
Author: Jonas Ådahl <jadahl gmail com>
Date: Thu Jul 9 09:45:07 2020 +0200
clutter/main: Use "is display server" state to decide a11y routing
We checked if we were using the usig the X11 backend to decide when to
deal with a11y event posting - in order to make the clutter code less
windowing system dependent, make this check a check whether we're a
display server or not, in contrast to a window/compositing manager
client. This is made into a vfunc ot ClutterBackendClass, implemented by
MetaClutterBackendNative and MetaClutterBackendX11.
https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1364
clutter/clutter/clutter-backend-private.h | 4 ++++
clutter/clutter/clutter-backend.c | 6 ++++++
clutter/clutter/clutter-main.c | 14 ++++++++------
src/backends/native/meta-clutter-backend-native.c | 7 +++++++
src/backends/x11/meta-clutter-backend-x11.c | 7 +++++++
5 files changed, 32 insertions(+), 6 deletions(-)
---
diff --git a/clutter/clutter/clutter-backend-private.h b/clutter/clutter/clutter-backend-private.h
index d5dca0d25d..e2db9e9458 100644
--- a/clutter/clutter/clutter-backend-private.h
+++ b/clutter/clutter/clutter-backend-private.h
@@ -93,6 +93,8 @@ struct _ClutterBackendClass
ClutterSeat * (* get_default_seat) (ClutterBackend *backend);
+ gboolean (* is_display_server) (ClutterBackend *backend);
+
/* signals */
void (* resolution_changed) (ClutterBackend *backend);
void (* font_changed) (ClutterBackend *backend);
@@ -142,6 +144,8 @@ void clutter_backend_set_fallback_resource_scale (ClutterBackend *backend,
float clutter_backend_get_fallback_resource_scale (ClutterBackend *backend);
+gboolean clutter_backend_is_display_server (ClutterBackend *backend);
+
G_END_DECLS
#endif /* __CLUTTER_BACKEND_PRIVATE_H__ */
diff --git a/clutter/clutter/clutter-backend.c b/clutter/clutter/clutter-backend.c
index 14c2539aeb..3c97caa3e7 100644
--- a/clutter/clutter/clutter-backend.c
+++ b/clutter/clutter/clutter-backend.c
@@ -1038,3 +1038,9 @@ clutter_backend_get_fallback_resource_scale (ClutterBackend *backend)
{
return backend->fallback_resource_scale;
}
+
+gboolean
+clutter_backend_is_display_server (ClutterBackend *backend)
+{
+ return CLUTTER_BACKEND_GET_CLASS (backend)->is_display_server (backend);
+}
diff --git a/clutter/clutter/clutter-main.c b/clutter/clutter/clutter-main.c
index e78a33e2d4..a5fcf84972 100644
--- a/clutter/clutter/clutter-main.c
+++ b/clutter/clutter/clutter-main.c
@@ -67,6 +67,7 @@
#include "clutter-settings-private.h"
#include "clutter-stage-manager.h"
#include "clutter-stage-private.h"
+#include "clutter-backend-private.h"
#ifdef CLUTTER_WINDOWING_X11
#include "x11/clutter-backend-x11.h"
@@ -1669,6 +1670,11 @@ _clutter_process_event_details (ClutterActor *stage,
ClutterEvent *event)
{
ClutterInputDevice *device = clutter_event_get_device (event);
+ ClutterMainContext *clutter_context;
+ ClutterBackend *backend;
+
+ clutter_context = _clutter_context_get_default ();
+ backend = clutter_context->backend;
switch (event->type)
{
@@ -1765,8 +1771,7 @@ _clutter_process_event_details (ClutterActor *stage,
break;
case CLUTTER_MOTION:
-#ifdef CLUTTER_WINDOWING_X11
- if (!clutter_check_windowing_backend (CLUTTER_WINDOWING_X11) &&
+ if (clutter_backend_is_display_server (backend) &&
!(event->any.flags & CLUTTER_EVENT_FLAG_SYNTHETIC))
{
if (_clutter_is_input_pointer_a11y_enabled (device))
@@ -1777,7 +1782,6 @@ _clutter_process_event_details (ClutterActor *stage,
_clutter_input_pointer_a11y_on_motion_event (device, x, y);
}
}
-#endif /* CLUTTER_WINDOWING_X11 */
/* only the stage gets motion events if they are enabled */
if (!clutter_stage_get_motion_events_enabled (CLUTTER_STAGE (stage)) &&
event->any.source == NULL)
@@ -1808,8 +1812,7 @@ _clutter_process_event_details (ClutterActor *stage,
G_GNUC_FALLTHROUGH;
case CLUTTER_BUTTON_PRESS:
case CLUTTER_BUTTON_RELEASE:
-#ifdef CLUTTER_WINDOWING_X11
- if (!clutter_check_windowing_backend (CLUTTER_WINDOWING_X11))
+ if (clutter_backend_is_display_server (backend))
{
if (_clutter_is_input_pointer_a11y_enabled (device) && (event->type != CLUTTER_MOTION))
{
@@ -1818,7 +1821,6 @@ _clutter_process_event_details (ClutterActor *stage,
event->type == CLUTTER_BUTTON_PRESS);
}
}
-#endif /* CLUTTER_WINDOWING_X11 */
case CLUTTER_SCROLL:
case CLUTTER_TOUCHPAD_PINCH:
case CLUTTER_TOUCHPAD_SWIPE:
diff --git a/src/backends/native/meta-clutter-backend-native.c
b/src/backends/native/meta-clutter-backend-native.c
index ff3ae1a383..841e0f31a1 100644
--- a/src/backends/native/meta-clutter-backend-native.c
+++ b/src/backends/native/meta-clutter-backend-native.c
@@ -119,6 +119,12 @@ meta_clutter_backend_native_get_default_seat (ClutterBackend *backend)
return CLUTTER_SEAT (backend_native->main_seat);
}
+static gboolean
+meta_clutter_backend_native_is_display_server (ClutterBackend *backend)
+{
+ return TRUE;
+}
+
static void
meta_clutter_backend_native_init (MetaClutterBackendNative *clutter_backend_nativen)
{
@@ -133,6 +139,7 @@ meta_clutter_backend_native_class_init (MetaClutterBackendNativeClass *klass)
clutter_backend_class->create_stage = meta_clutter_backend_native_create_stage;
clutter_backend_class->init_events = meta_clutter_backend_native_init_events;
clutter_backend_class->get_default_seat = meta_clutter_backend_native_get_default_seat;
+ clutter_backend_class->is_display_server = meta_clutter_backend_native_is_display_server;
}
/**
diff --git a/src/backends/x11/meta-clutter-backend-x11.c b/src/backends/x11/meta-clutter-backend-x11.c
index d2f6136c9d..a8cd1bc90e 100644
--- a/src/backends/x11/meta-clutter-backend-x11.c
+++ b/src/backends/x11/meta-clutter-backend-x11.c
@@ -138,6 +138,12 @@ meta_clutter_backend_x11_get_default_seat (ClutterBackend *backend)
return CLUTTER_SEAT (backend_x11->core_seat);
}
+static gboolean
+meta_clutter_backend_x11_is_display_server (ClutterBackend *backend)
+{
+ return meta_is_wayland_compositor ();
+}
+
static void
meta_clutter_backend_x11_init (MetaClutterBackendX11 *clutter_backend_x11)
{
@@ -153,4 +159,5 @@ meta_clutter_backend_x11_class_init (MetaClutterBackendX11Class *klass)
clutter_backend_class->translate_event = meta_clutter_backend_x11_translate_event;
clutter_backend_class->init_events = meta_clutter_backend_x11_init_events;
clutter_backend_class->get_default_seat = meta_clutter_backend_x11_get_default_seat;
+ clutter_backend_class->is_display_server = meta_clutter_backend_x11_is_display_server;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]